Python NumPy中的隨機(jī)數(shù)及ufuncs函數(shù)使用示例詳解
什么是隨機(jī)數(shù)
隨機(jī)數(shù)并不意味著每次都有不同的數(shù)字。隨機(jī)意味著無(wú)法在邏輯上預(yù)測(cè)的事物。
偽隨機(jī)和真隨機(jī)
計(jì)算機(jī)在程序上工作,程序是權(quán)威的指令集。
因此,這意味著必須有某種算法來(lái)生成隨機(jī)數(shù)。
如果存在生成隨機(jī)數(shù)的程序,則可以預(yù)測(cè)它,因此它就不是真正的隨機(jī)數(shù)。
通過(guò)生成算法生成的隨機(jī)數(shù)稱(chēng)為偽隨機(jī)數(shù)。
我們可以生成真正的隨機(jī)數(shù)嗎
是的。
為了在我們的計(jì)算機(jī)上生成一個(gè)真正的隨機(jī)數(shù),我們需要從某個(gè)外部來(lái)源獲取隨機(jī)數(shù)據(jù)。
外部來(lái)源通常是我們的擊鍵、鼠標(biāo)移動(dòng)、網(wǎng)絡(luò)數(shù)據(jù)等。
我們不需要真正的隨機(jī)數(shù),除非它與安全性(例如加密密鑰)有關(guān)或應(yīng)用的基礎(chǔ)是隨機(jī)性(例如數(shù)字輪盤(pán)賭輪)。
在本教程中,我們將使用偽隨機(jī)數(shù)。
生成隨機(jī)數(shù)
NumPy 提供了 random 模塊來(lái)處理隨機(jī)數(shù)。
實(shí)例
生成一個(gè) 0 到 100 之間的隨機(jī)整數(shù):
from numpy import random x = random.randint(100) print(x)
運(yùn)行實(shí)例
生成隨機(jī)浮點(diǎn)
random 模塊的 rand() 方法返回 0 到 1 之間的隨機(jī)浮點(diǎn)數(shù)。
實(shí)例
生成一個(gè) 0 到 100 之間的隨機(jī)浮點(diǎn)數(shù):
from numpy import random x = random.rand() print(x)
運(yùn)行實(shí)例
生成隨機(jī)數(shù)組
在 NumPy 中,我們可以使用上例中的兩種方法來(lái)創(chuàng)建隨機(jī)數(shù)組。
整數(shù)
randint()
方法接受 size 參數(shù),您可以在其中指定數(shù)組的形狀。
實(shí)例
生成一個(gè) 1-D 數(shù)組,其中包含 5 個(gè)從 0 到 100 之間的隨機(jī)整數(shù):
from numpy import random x=random.randint(100, size=(5)) print(x)
運(yùn)行實(shí)例
實(shí)例
生成有 3 行的 2-D 數(shù)組,每行包含 5 個(gè)從 0 到 100 之間的隨機(jī)整數(shù):
from numpy import random x = random.randint(100, size=(3, 5)) print(x)
運(yùn)行實(shí)例
浮點(diǎn)數(shù)
rand() 方法還允許您指定數(shù)組的形狀。
實(shí)例
生成包含 5 個(gè)隨機(jī)浮點(diǎn)數(shù)的 1-D 數(shù)組:
from numpy import random x = random.rand(5) print(x)
運(yùn)行實(shí)例
實(shí)例
生成有 3 行的 2-D 數(shù)組,每行包含 5 個(gè)隨機(jī)數(shù):
from numpy import random x = random.rand(3, 5) print(x)
運(yùn)行實(shí)例
從數(shù)組生成隨機(jī)數(shù)
choice() 方法使您可以基于值數(shù)組生成隨機(jī)值。
choice() 方法將數(shù)組作為參數(shù),并隨機(jī)返回其中一個(gè)值。
實(shí)例
返回?cái)?shù)組中的值之一:
from numpy import random x = random.choice([3, 5, 7, 9]) print(x)
運(yùn)行實(shí)例
choice() 方法還允許您返回一個(gè)值數(shù)組。
請(qǐng)?zhí)砑右粋€(gè) size 參數(shù)以指定數(shù)組的形狀。
實(shí)例
生成由數(shù)組參數(shù)(3、5、7 和 9)中的值組成的二維數(shù)組:
from numpy import random x = random.choice([3, 5, 7, 9], size=(3, 5)) print(x)
運(yùn)行實(shí)例
什么是 ufuncs
ufuncs 指的是“通用函數(shù)”(Universal Functions),它們是對(duì) ndarray 對(duì)象進(jìn)行操作的 NumPy 函數(shù)。
為什么要使用 ufuncs
ufunc 用于在 NumPy 中實(shí)現(xiàn)矢量化,這比迭代元素要快得多。
它們還提供廣播和其他方法,例如減少、累加等,它們對(duì)計(jì)算非常有幫助。
ufuncs 還接受其他參數(shù),比如:
- where 布爾值數(shù)組或條件,用于定義應(yīng)在何處進(jìn)行操作。
- dtype 定義元素的返回類(lèi)型。
- out 返回值應(yīng)被復(fù)制到的輸出數(shù)組。
什么是向量化
將迭代語(yǔ)句轉(zhuǎn)換為基于向量的操作稱(chēng)為向量化。
由于現(xiàn)代 CPU 已針對(duì)此類(lèi)操作進(jìn)行了優(yōu)化,因此速度更快。
對(duì)兩個(gè)列表的元素進(jìn)行相加:
list 1: [1, 2, 3, 4]
list 2: [4, 5, 6, 7]
一種方法是遍歷兩個(gè)列表,然后對(duì)每個(gè)元素求和。
實(shí)例
如果沒(méi)有 ufunc,我們可以使用 Python 的內(nèi)置 zip() 方法:
x = [1, 2, 3, 4] y = [4, 5, 6, 7] z = [] for i, j in zip(x, y): z.append(i + j) print(z)
運(yùn)行實(shí)例
對(duì)此,NumPy 有一個(gè) ufunc,名為 add(x, y),它會(huì)輸出相同的結(jié)果。
實(shí)例
通過(guò) ufunc,我們可以使用 add() 函數(shù):
import numpy as np x = [1, 2, 3, 4] y = [4, 5, 6, 7] z = np.add(x, y) print(z)
運(yùn)行實(shí)例
到此這篇關(guān)于Python NumPy中的隨機(jī)數(shù)及ufuncs函數(shù)使用示例詳解的文章就介紹到這了,更多相關(guān)Python NumPy隨機(jī)數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python實(shí)現(xiàn)定時(shí)監(jiān)測(cè)網(wǎng)站運(yùn)行狀態(tài)的示例代碼
這篇文章主要介紹了Python實(shí)現(xiàn)定時(shí)監(jiān)測(cè)網(wǎng)站狀態(tài)的示例代碼,幫助大家更好的管理自己的網(wǎng)站,感興趣的朋友可以了解下2020-09-09python教程十行代碼教你語(yǔ)音轉(zhuǎn)文字QQ微信聊天
QQ上面發(fā)的語(yǔ)音消息是可以直接文字識(shí)別的,但是微信為什么沒(méi)有呢?是因?yàn)榧夹g(shù)太難實(shí)現(xiàn)嗎?這個(gè)很簡(jiǎn)單?。〗裉旖o大家介紹一下語(yǔ)音轉(zhuǎn)文字的原理2021-09-09Python?requests用法和django后臺(tái)處理詳解
這篇文章主要給大家介紹了關(guān)于Python中requests用法和django后臺(tái)處理的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-03-03使用Python自動(dòng)化自定義字體混淆信息的方法實(shí)例
今天小編就為大家分享一篇關(guān)于使用Python自動(dòng)化自定義字體混淆信息的方法實(shí)例,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-02-02Python實(shí)現(xiàn)簡(jiǎn)單層次聚類(lèi)算法以及可視化
這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)簡(jiǎn)單層次聚類(lèi)算法以及可視化,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-03-03通過(guò)Python實(shí)現(xiàn)在Word中添加和刪除書(shū)簽的操作
在Word中,書(shū)簽功能是一個(gè)非常實(shí)用的工具,它允許用戶(hù)快速定位到文檔中的特定位置,無(wú)論是進(jìn)行文檔審閱、編輯還是查找特定信息,書(shū)簽都能提供極大的便利,下面將詳細(xì)介紹如何通過(guò)Python在Word文檔中添加和刪除書(shū)簽,需要的朋友可以參考下2024-09-09使用python將excel數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫(kù)過(guò)程詳解
這篇文章主要介紹了使用python將excel數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫(kù)過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08