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

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

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

一、numpy.random 模塊核心定位

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

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

二、先掌握基礎(chǔ):隨機(jī)種子(seed)

偽隨機(jī)數(shù)的生成依賴 “種子”(初始值),固定種子后,每次生成的隨機(jī)數(shù)完全一致 —— 這是調(diào)試、復(fù)現(xiàn)實(shí)驗(yàn)的關(guā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]
# 重置種子,重新生成(結(jié)果和第一次完全一致)
np.random.seed(42)
print(np.random.rand(3))  # [0.3745 0.9507 0.7319]
# 2. 局部隨機(jī)生成器(推薦,不污染全局)
rng = np.random.default_rng(seed=42)  # 創(chuàng)建獨(dú)立生成器
print(rng.rand(3))  # [0.7739 0.4389 0.8585]

關(guān)鍵說明:

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

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

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

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

函數(shù)作用語法示例
np.random.rand()0~1 均勻分布浮點(diǎn)數(shù)rand(d0,d1,...)np.random.rand(2,3) → 2 行 3 列 0~1 浮點(diǎn)數(shù)
np.random.randn()標(biāo)準(zhǔn)正態(tài)分布(μ=0, σ=1)randn(d0,d1,...)np.random.randn(5) → 5 個(gè)標(biāo)準(zhǔn)正態(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()指定范圍均勻分布浮點(diǎn)數(shù)uniform(low, high, size)np.random.uniform(-5,15,31) → -5~15 的 31 個(gè)浮點(diǎn)數(shù)

實(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]
# 生成隨機(jī)整數(shù)(模擬班級(jí)人數(shù):30~50人,5個(gè)班級(jí))
class_size = np.random.randint(30, 51, size=5)
print("班級(jí)人數(shù):", class_size)  # 輸出:[42 35 48 39 41]

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

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

表格

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

實(shí)戰(zhàn)示例(模擬考試分?jǐn)?shù)):

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

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

用于從已有數(shù)據(jù)中隨機(jī)選擇、打亂順序,適合機(jī)器學(xué)習(xí)的數(shù)據(jù)集劃分、隨機(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ù)組中隨機(jī)采樣(可重復(fù) / 不重復(fù))choice(arr, size, replace=True, p=概率)np.random.choice([1,2,3], size=5, p=[0.2,0.5,0.3])

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

import numpy as np
# 原始數(shù)據(jù):10個(gè)學(xué)生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. 隨機(jī)采樣5個(gè)(不重復(fù),無放回)
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("概率采樣結(jié)果:", prob_sample)  # 輸出:[1 1 1 4 1 1 2 1 1 3]

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

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

表格

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

實(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

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

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

用法示例:

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

五、避坑點(diǎn)與最佳實(shí)踐

1. 常見誤區(qū)

  • 混淆 rand/randn/normal
    • rand():0~1 均勻分布;
    • randn():標(biāo)準(zhǔn)正態(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. 最佳實(shí)踐

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

總結(jié)

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

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

相關(guān)文章

  • Django框架靜態(tài)文件處理、中間件、上傳文件操作實(shí)例詳解

    Django框架靜態(tài)文件處理、中間件、上傳文件操作實(shí)例詳解

    這篇文章主要介紹了Django框架靜態(tài)文件處理、中間件、上傳文件操作,結(jié)合實(shí)例形式詳細(xì)分析了Django框架中靜態(tài)文件處理、中間件及上傳文件操作相關(guān)實(shí)現(xiàn)技巧與注意事項(xiàng),需要的朋友可以參考下
    2020-02-02
  • python 將list轉(zhuǎn)成字符串,中間用符號(hào)分隔的方法

    python 將list轉(zhuǎn)成字符串,中間用符號(hào)分隔的方法

    今天小編就為大家分享一篇python 將list轉(zhuǎn)成字符串,中間用符號(hào)分隔的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • python中__init__方法知識(shí)點(diǎn)詳解

    python中__init__方法知識(shí)點(diǎn)詳解

    Python中常會(huì)看到在很多類中都有一個(gè)__init__函數(shù),該函數(shù)有什么作用,又該如何使用呢,下面這篇文章主要給大家介紹了關(guān)于python中__init__知識(shí)點(diǎn)的相關(guān)資料,需要的朋友可以參考下
    2023-04-04
  • 昨晚我用python幫隔壁小姐姐P證件照然后發(fā)現(xiàn)

    昨晚我用python幫隔壁小姐姐P證件照然后發(fā)現(xiàn)

    大家好,我是Lex 喜歡欺負(fù)超人那個(gè)Lex 建議大家收藏哦,以后幫小姐姐P自拍,證件照,調(diào)尺寸,背景,摳圖,直接10行代碼搞定,瞬間高大上
    2021-08-08
  • pytorch中fuse_modules源碼解讀

    pytorch中fuse_modules源碼解讀

    這篇文章主要介紹了pytorch中fuse_modules,fuse_known_modules將給定的模塊列表mod_list中的一些常見模塊進(jìn)行融合,返回融合后的模塊列表,本文通過實(shí)例代碼詳細(xì)講解,需要的朋友可以參考下
    2023-05-05
  • Python打造視覺精美的數(shù)獨(dú)小游戲?qū)崙?zhàn)記錄

    Python打造視覺精美的數(shù)獨(dú)小游戲?qū)崙?zhàn)記錄

    數(shù)獨(dú)是一種基于邏輯推理的數(shù)字填充謎題,目標(biāo)是在9×9網(wǎng)格中填入1–9的數(shù)字,使得每行、每列及每個(gè)3×3子宮格內(nèi)均無重復(fù),這篇文章主要介紹了Python打造視覺精美的數(shù)獨(dú)小游戲的相關(guān)資料,需要的朋友可以參考下
    2026-05-05
  • Python判斷字符串是否為字母或者數(shù)字(浮點(diǎn)數(shù))的多種方法

    Python判斷字符串是否為字母或者數(shù)字(浮點(diǎn)數(shù))的多種方法

    本文給大家?guī)砣N方法基于Python判斷字符串是否為字母或者數(shù)字(浮點(diǎn)數(shù)),非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-08-08
  • OpenCV和Pyzbar檢測二維碼和條碼

    OpenCV和Pyzbar檢測二維碼和條碼

    在現(xiàn)代社會(huì),二維碼和條碼的應(yīng)用非常廣泛,從商品標(biāo)簽到支付二維碼,本文將詳細(xì)介紹如何使用?OpenCV?和?Pyzbar?庫在?Python?中檢測并識(shí)別二維碼和條碼,需要的可以參考下
    2024-11-11
  • Python中的命名元組簡單而強(qiáng)大的數(shù)據(jù)結(jié)構(gòu)示例詳解

    Python中的命名元組簡單而強(qiáng)大的數(shù)據(jù)結(jié)構(gòu)示例詳解

    namedtuple是Python中一個(gè)非常有用的數(shù)據(jù)結(jié)構(gòu),它提供了一種簡單的方式創(chuàng)建具有固定字段的輕量級(jí)對(duì)象,通過使用namedtuple,可以提高代碼的可讀性和可維護(hù)性,避免了使用類定義對(duì)象的復(fù)雜性,這篇文章主要介紹了Python中的命名元組簡單而強(qiáng)大的數(shù)據(jù)結(jié)構(gòu),需要的朋友可以參考下
    2024-05-05
  • Python將一個(gè)CSV文件里的數(shù)據(jù)追加到另一個(gè)CSV文件的方法

    Python將一個(gè)CSV文件里的數(shù)據(jù)追加到另一個(gè)CSV文件的方法

    今天小編就為大家分享一篇Python將一個(gè)CSV文件里的數(shù)據(jù)追加到另一個(gè)CSV文件的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07

最新評(píng)論

蒙自县| 淮北市| 达拉特旗| 铜鼓县| 波密县| 高清| 晴隆县| 禹城市| 休宁县| 正定县| 拉孜县| 贵阳市| 青冈县| 山丹县| 宁南县| 天柱县| 荃湾区| 湘阴县| 永年县| 班玛县| 泸定县| 贵阳市| 徐水县| 河南省| 米泉市| 东至县| 习水县| 弥勒县| 霍城县| 临沭县| 开封市| 理塘县| 望谟县| 施甸县| 县级市| 宜兴市| 中方县| 双牌县| 监利县| 宁都县| 衡阳市|