最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Numpy.Random()函數(shù)的具體使用

 更新時間:2026年04月17日 09:12:00   作者:林深時見鹿1  
numpy.random 是 NumPy 專門用于生成偽隨機數(shù)的模塊,本文就來詳細的介紹一下Numpy.Random()函數(shù)的具體使用,具有一定的參考價值,感興趣的可以了解一下

一、numpy.random 模塊核心定位

numpy.random 是 NumPy 專門用于生成偽隨機數(shù)的模塊(偽隨機:基于種子的可復現(xiàn)隨機,而非真隨機),相比 Python 原生 random 庫,它的核心優(yōu)勢:

  1. 支持向量化生成:直接生成多維數(shù)組,無需循環(huán)(如一次性生成 1000 個正態(tài)分布數(shù));
  2. 覆蓋更多統(tǒng)計分布:除了均勻 / 正態(tài)分布,還支持泊松、指數(shù)、二項分布等;
  3. 效率更高:底層 C 實現(xiàn),生成大規(guī)模隨機數(shù)時速度遠超 Python 原生;
  4. 可復現(xiàn)性:通過種子(seed)固定隨機序列,便于實驗復現(xiàn)。

二、先掌握基礎:隨機種子(seed)

偽隨機數(shù)的生成依賴 “種子”(初始值),固定種子后,每次生成的隨機數(shù)完全一致 —— 這是調(diào)試、復現(xiàn)實驗的關鍵。

用法示例:

import numpy as np
# 1. 全局種子(影響所有random函數(shù))
np.random.seed(42)  # 固定種子值(任意整數(shù))
print(np.random.rand(3))  # [0.3745 0.9507 0.7319]
print(np.random.rand(3))  # [0.5986 0.1560 0.1559]
# 重置種子,重新生成(結果和第一次完全一致)
np.random.seed(42)
print(np.random.rand(3))  # [0.3745 0.9507 0.7319]
# 2. 局部隨機生成器(推薦,不污染全局)
rng = np.random.default_rng(seed=42)  # 創(chuàng)建獨立生成器
print(rng.rand(3))  # [0.7739 0.4389 0.8585]

關鍵說明:

  • np.random.seed():全局種子,設置后所有 np.random.* 函數(shù)都受影響;
  • np.random.default_rng():NumPy 1.17+ 推薦用法,創(chuàng)建獨立的隨機生成器,避免全局種子沖突;
  • 種子值可任意選(如 42、10、2024),核心是 “固定值對應固定隨機序列”。

三、常用隨機函數(shù)分類(按場景)

類別 1:基礎隨機數(shù)(均勻分布)

生成 0~1 均勻分布、指定范圍整數(shù) / 浮點數(shù),是最基礎的隨機數(shù)生成方式。

函數(shù)作用語法示例
np.random.rand()0~1 均勻分布浮點數(shù)rand(d0,d1,...)np.random.rand(2,3) → 2 行 3 列 0~1 浮點數(shù)
np.random.randn()標準正態(tài)分布(μ=0, σ=1)randn(d0,d1,...)np.random.randn(5) → 5 個標準正態(tài)數(shù)
np.random.randint()指定范圍整數(shù)randint(low, high=None, size, dtype)np.random.randint(0,10,(2,2)) → 0~9 的 2x2 整數(shù)
np.random.uniform()指定范圍均勻分布浮點數(shù)uniform(low, high, size)np.random.uniform(-5,15,31) → -5~15 的 31 個浮點數(shù)

實戰(zhàn)示例(模擬 3 月溫度,均勻分布):

import numpy as np
# 生成3月溫度:-5~15℃均勻分布,31天,保留1位小數(shù)
march_temp = np.round(np.random.uniform(-5, 15, 31), 1)
print("3月溫度(均勻分布):", march_temp[:10])
# 輸出:[-1.2  8.7 12.3  4.5  9.8  0.7 11.1  7.2  2.9 14.8]
# 生成隨機整數(shù)(模擬班級人數(shù):30~50人,5個班級)
class_size = np.random.randint(30, 51, size=5)
print("班級人數(shù):", class_size)  # 輸出:[42 35 48 39 41]

類別 2:正態(tài)分布隨機數(shù)(高頻!貼合你的場景)

生成指定均值(μ)、標準差(σ)的正態(tài)分布數(shù),適合模擬自然數(shù)據(jù)(溫度、分數(shù)、身高)。

表格

函數(shù)作用語法示例
np.random.normal()自定義正態(tài)分布normal(loc=μ, scale=σ, size)np.random.normal(100,15,1000) → 均值 100,σ=15,1000 個
np.random.randn()標準正態(tài)分布(等價于 normal (0,1,size))randn(size)np.random.randn(10) → μ=0, σ=1

實戰(zhàn)示例(模擬考試分數(shù)):

import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# 生成1000個分數(shù):均值80,標準差10,限制0~100
scores = np.random.normal(80, 10, 1000)
scores = np.clip(scores, 0, 100)  # 限制范圍
# 繪制直方圖驗證分布
fig, ax = plt.subplots(figsize=(10, 6))
ax.hist(scores, bins=20, color='skyblue', edgecolor='black')
ax.set_title('考試分數(shù)正態(tài)分布', fontsize=16)
ax.set_xlabel('分數(shù)', fontsize=14)
ax.set_ylabel('人數(shù)', fontsize=14)
plt.show()

類別 3:隨機抽樣 / 排列(數(shù)據(jù)打亂、采樣)

用于從已有數(shù)據(jù)中隨機選擇、打亂順序,適合機器學習的數(shù)據(jù)集劃分、隨機采樣。

表格

函數(shù)作用語法示例
np.random.shuffle()原地打亂數(shù)組(一維 / 二維按行打亂)shuffle(arr)arr = [1,2,3]; np.random.shuffle(arr) → [2,1,3]
np.random.permutation()返回打亂后的新數(shù)組(不修改原數(shù)組)permutation(arr/size)np.random.permutation(5) → [3,1,4,2,0]
np.random.choice()從數(shù)組中隨機采樣(可重復 / 不重復)choice(arr, size, replace=True, p=概率)np.random.choice([1,2,3], size=5, p=[0.2,0.5,0.3])

實戰(zhàn)示例(數(shù)據(jù)集隨機采樣):

import numpy as np
# 原始數(shù)據(jù):10個學生ID
student_ids = np.arange(1, 11)  # [1,2,...,10]
# 1. 打亂數(shù)組(原地修改)
np.random.shuffle(student_ids)
print("打亂后的ID:", student_ids)  # 輸出:[7 3 8 1 9 2 5 4 6 10]
# 2. 隨機采樣5個(不重復,無放回)
sample_ids = np.random.choice(student_ids, size=5, replace=False)
print("采樣ID(無放回):", sample_ids)  # 輸出:[3 9 2 6 10]
# 3. 按概率采樣(比如抽中1的概率0.8,其他0.05)
prob_sample = np.random.choice([1,2,3,4], size=10, p=[0.8,0.05,0.05,0.1])
print("概率采樣結果:", prob_sample)  # 輸出:[1 1 1 4 1 1 2 1 1 3]

類別 4:其他常用分布(專業(yè)場景)

適用于特定統(tǒng)計場景,如泊松分布(計數(shù)數(shù)據(jù))、指數(shù)分布(時間間隔)、二項分布(二分類實驗)。

表格

函數(shù)適用場景示例
np.random.poisson()計數(shù)數(shù)據(jù)(如每天訂單數(shù)、故障次數(shù))np.random.poisson(lam=5, size=10) → 均值 5 的泊松數(shù)
np.random.exponential()時間間隔(如排隊等待時間、設備壽命)np.random.exponential(scale=10, size=5) → 均值 10 的指數(shù)數(shù)
np.random.binomial()二分類實驗(如拋硬幣、抽獎)np.random.binomial(n=10, p=0.5, size=3) → 10 次拋硬幣正面次數(shù)

實戰(zhàn)示例(模擬每天訂單數(shù)):

import numpy as np
# 模擬30天訂單數(shù):均值20的泊松分布
orders = np.random.poisson(lam=20, size=30)
print("30天訂單數(shù):", orders)
print("日均訂單:", np.mean(orders))  # 接近20

四、高級用法:自定義隨機生成器(推薦)

NumPy 1.17+ 推出了新的隨機 API(Generator),替代舊的 np.random.* 全局函數(shù),優(yōu)勢是線程安全、功能更全、避免種子沖突。

用法示例:

import numpy as np
# 創(chuàng)建自定義生成器(固定種子)
rng = np.random.default_rng(seed=42)
# 生成隨機數(shù)(用法和舊API類似,前綴改為rng.)
print("0~1均勻分布:", rng.rand(3))
print("正態(tài)分布:", rng.normal(80, 10, 5))
print("隨機整數(shù):", rng.integers(0, 10, size=3))
print("打亂數(shù)組:", rng.permutation([1,2,3]))

五、避坑點與最佳實踐

1. 常見誤區(qū)

  • 混淆 rand/randn/normal
    • rand():0~1 均勻分布;
    • randn():標準正態(tài)(μ=0, σ=1);
    • normal(loc, scale):自定義正態(tài)分布(常用);
  • randint 的 high 參數(shù)randint(0,10) 生成 0~9(不包含 10),需注意 “左閉右開”;
  • shuffle 原地修改shuffle(arr) 直接修改原數(shù)組,如需保留原數(shù)組,用 permutation()。

2. 最佳實踐

  • 固定種子:實驗 / 調(diào)試時必須設置種子,確保結果可復現(xiàn);
  • 使用新生成器:優(yōu)先用 np.random.default_rng() 而非全局 seed()
  • 大規(guī)模生成:生成百萬級隨機數(shù)時,用 NumPy 而非 Python 原生 random(速度快 100 + 倍);
  • 范圍限制:生成自然數(shù)據(jù)(溫度、分數(shù))時,用 np.clip() 限制合理范圍,避免極端值。

總結

  1. numpy.random 核心是生成偽隨機數(shù),通過種子實現(xiàn)可復現(xiàn),向量化生成效率遠超 Python 原生;
  2. 高頻函數(shù)(貼合你的場景):
    • 模擬自然數(shù)據(jù):normal()(正態(tài))、uniform()(均勻);
    • 數(shù)據(jù)打亂 / 采樣:shuffle()choice()、permutation();
    • 基礎隨機數(shù):rand()(0~1)、randint()(整數(shù));
  3. 推薦用法:用 np.random.default_rng() 創(chuàng)建自定義生成器,避免全局種子沖突;
  4. 避坑關鍵:區(qū)分不同分布函數(shù),注意 randint 左閉右開,生成數(shù)據(jù)后用 clip() 限制合理范圍。

到此這篇關于Numpy.Random()函數(shù)的具體使用的文章就介紹到這了,更多相關Numpy.Random()使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論

宜宾县| 武夷山市| 巫溪县| 九台市| 南丰县| 乌拉特前旗| 重庆市| 马山县| 大石桥市| 曲沃县| 平南县| 台州市| 彩票| 苍梧县| 万全县| 洛阳市| 眉山市| 同德县| 汾阳市| 洪江市| 永川市| 黔东| 阜城县| 东阿县| 秭归县| 轮台县| 唐海县| 阿图什市| 舒兰市| 宁武县| 家居| 乌鲁木齐市| 嵊泗县| 乐亭县| 涪陵区| 陆丰市| 云龙县| 饶河县| 勐海县| 台安县| 江口县|