本篇文章主要講解NumPy的科學(xué)計(jì)算函數(shù)也糊,雖然在寫這篇文章的時(shí)候還是感覺(jué)這篇文章要比前兩篇文章要好些一點(diǎn)拍冠,但是辟拷,NumPy的這些函數(shù)才是更加重要的智政,做數(shù)據(jù)分析不是創(chuàng)建ndarray,而是操作ndarray進(jìn)行計(jì)算稠歉,獲取更深層的數(shù)據(jù)掰担。所有的函數(shù)并沒(méi)有進(jìn)行詳細(xì)解釋,需要用到直接在IPython中輸入+“?”查看怒炸。
通用函數(shù)(Universal Functions)是一種對(duì)數(shù)據(jù)執(zhí)行元素級(jí)運(yùn)算的函數(shù)带饱。
一元ufunc
函數(shù) | 說(shuō)明 |
---|---|
abs、fabs | 計(jì)算整數(shù)横媚、浮點(diǎn)數(shù)或復(fù)數(shù)的絕對(duì)值纠炮。對(duì)于非復(fù)數(shù)值月趟,可以使用更快的fabs |
sqrt | 計(jì)算各元素的平方根灯蝴。相當(dāng)于arr**0.5 |
square | 計(jì)算各元素的平方。相當(dāng)于arr**2 |
exp | 計(jì)算各元素的指數(shù)$e^x$(這里簡(jiǎn)書居然不支持e的x次方) |
log孝宗、log10穷躁、log2、log1p | 分別為自然對(duì)數(shù)(底數(shù)為e)、底數(shù)為10的log问潭、底數(shù)為2的log猿诸、底數(shù)為(1+x) |
sign | 計(jì)算各元素的正負(fù)號(hào):1(正數(shù))、0(零)狡忙、-1(負(fù)數(shù)) |
ceil | 計(jì)算各元素的ceiling值梳虽,即大于等于該值的最小整數(shù) |
floor | 計(jì)算各元素的floor值,即小于等于該值的最大整數(shù) |
rint | 將各元素值四舍五入到最接近的整數(shù)灾茁,保留dtype |
modf | 將數(shù)組的小數(shù)和整數(shù)部分以兩個(gè)獨(dú)立的數(shù)組的形式返回 |
isnan | 返回一個(gè)表示“那些是NaN”的布爾型數(shù)組 |
isfinite窜觉、isinf | 分別返回一個(gè)表示“哪些元素是有窮的(非inf,非NaN)”或“那些數(shù)據(jù)是無(wú)窮的”布爾型數(shù)組 |
cos、cosh北专、sin禀挫、sinh、tan拓颓、tanh | 普通型和雙曲線型三角函數(shù) |
arccos语婴、arccosh、arcsin驶睦、arcsinh砰左、arctan、arctanh | 反三角函數(shù) |
logical_not | 計(jì)算個(gè)元素not x的真值啥繁。相當(dāng)于-arr |
二元ufunc
函數(shù) | 說(shuō)明 |
---|---|
add | 將數(shù)組中對(duì)應(yīng)的元素相加 |
subtract | 從第一個(gè)數(shù)組中減去第二個(gè)數(shù)組中的元素 |
multiply | 數(shù)組元素相乘 |
divide菜职、floor_divide | 除法或向下圓整除法(丟棄余數(shù)) |
power | 對(duì)第一個(gè)數(shù)組中的元素A,根據(jù)第二個(gè)數(shù)組中的相應(yīng)元素B旗闽,計(jì)算$A^B$ |
maximun酬核、fmax | 元素級(jí)的最大值計(jì)算。fmax將忽略NaN |
mininum适室、fmin | 元素級(jí)的最小值計(jì)算嫡意。fmin將忽略NaN |
mod | 元素級(jí)的求模計(jì)算(除法的余數(shù)) |
copysign | 將第二個(gè)數(shù)組中的值得符號(hào)復(fù)制給第一個(gè)數(shù)組中的值 |
greater、greater_equal捣辆、less蔬螟、less_equal、equal汽畴、not_equal | 執(zhí)行元素級(jí)的比較運(yùn)算旧巾,最終產(chǎn)生布爾型數(shù)組。相當(dāng)于中綴運(yùn)算符>忍些、>=鲁猩、<、<=罢坝、==廓握、!= |
logical_and、logical_or、logical_xor | 執(zhí)行元素級(jí)的真值邏輯運(yùn)算隙券。相當(dāng)于中綴運(yùn)算符&男应、|、^ |
基本數(shù)據(jù)統(tǒng)計(jì)
函數(shù) | 說(shuō)明 |
---|---|
sum | 對(duì)數(shù)組中全部或某軸向的元素求和娱仔。零長(zhǎng)度的數(shù)組的sum為0 |
mean | 算數(shù)平均數(shù)沐飘。零長(zhǎng)度的數(shù)組的mean為NaN |
std、var | 分別為標(biāo)準(zhǔn)差和方差牲迫,自由度可調(diào)(默認(rèn)為n) |
min薪铜、max | 最大值和最小值 |
argmin、argmax | 分別為最大和最小元素的索引 |
cumsum | 所有元素的累計(jì)和恩溅,所產(chǎn)生的是一個(gè)中間結(jié)果的新數(shù)組隔箍,axis默認(rèn)為None,此時(shí)產(chǎn)生一維的累計(jì)和數(shù)組脚乡,axis為其它值時(shí)蜒滩,產(chǎn)生的數(shù)組將和原數(shù)組shape相同。 |
cumprod | 所有元素的累計(jì)積奶稠,同上俯艰。 |
這些方法中布爾值會(huì)被強(qiáng)制轉(zhuǎn)換為1(True)和0(False)。
問(wèn)詢函數(shù)
any用于測(cè)試數(shù)組中是否存在一個(gè)或多個(gè)True锌订,而all則檢查數(shù)組中是否都是True竹握,主要用于布爾型數(shù)組,也可以用于非布爾型數(shù)組辆飘,所有非0元素將會(huì)被當(dāng)成True啦辐。
將條件邏輯表述為數(shù)組運(yùn)算。numpy.where(cond, xarr, yarr)函數(shù)是三元表達(dá)式x if condition else y的矢量化版本蜈项。np.where的第二個(gè)和第三個(gè)參數(shù)不必是數(shù)組芹关,他們都可以是標(biāo)量值。
排序
ndarray的sort是就地排序紧卒,而頂級(jí)方法np.sort會(huì)為原數(shù)組創(chuàng)建一個(gè)已經(jīng)排序的副本侥衬。
線性代數(shù)
numpy.linalg中有一組標(biāo)準(zhǔn)的矩陣分解運(yùn)算以及諸如求逆和行列式之類的函數(shù)。他們跟MATLAB和R等語(yǔ)言所使用的是相同的行業(yè)標(biāo)準(zhǔn)級(jí)Fortran庫(kù)跑芳。
函數(shù) | 說(shuō)明 |
---|---|
diag | 以一維數(shù)組的形式返回方陣的對(duì)角線(或非對(duì)角線)元素轴总,或?qū)⒁痪S數(shù)組轉(zhuǎn)換為方陣(非對(duì)角線元素為0)。此函數(shù)在np下博个,并非在np.linalg下 |
dot | 矩陣乘法 |
trace | 計(jì)算對(duì)角線元素的和 |
det | 計(jì)算矩陣行列式 |
eig | 計(jì)算方陣的本征值和本征向量 |
inv | 計(jì)算方陣的逆 |
pinv | 計(jì)算矩陣的Moore-Penrose偽逆 |
qr | 計(jì)算QR分解 |
svd | 計(jì)算奇異值分解(SVD) |
solve | 解線性方程組Ax=b怀樟,其中A為一個(gè)方陣 |
lstsq | 計(jì)算Ax=b的最小二乘解 |
隨機(jī)數(shù)生成
numpy.random模塊對(duì)python內(nèi)置的random進(jìn)行了補(bǔ)充,增加了一些用于高效生成多種概率分布的樣本值的函數(shù)坡倔。
函數(shù) | 說(shuō)明 |
---|---|
seed | 確定隨機(jī)數(shù)生成器的種子 |
permutation | 返回一個(gè)序列的隨機(jī)排列或返回一個(gè)隨機(jī)排列的范圍 |
shuffle | 對(duì)一個(gè)序列就地隨機(jī)排列 |
rand | 產(chǎn)生均勻分布的樣本值 |
randint | 從給定的上下限范圍內(nèi)隨機(jī)選取整數(shù) |
randn | 產(chǎn)生正態(tài)分布(平均值為0漂佩,標(biāo)準(zhǔn)差為1)的樣本值,類似于MATLAB接口 |
binomial | 產(chǎn)生二項(xiàng)分布的樣本值 |
normal | 產(chǎn)生正態(tài)(高斯)分布的樣本值 |
beta | 產(chǎn)生Beta分布的樣本值 |
chisquare | 產(chǎn)生卡方分布的樣本值 |
gamma | 產(chǎn)生Gamma分布的樣本值 |
uniform | 產(chǎn)生在[0,1)中均勻分布的樣本值 |
官方文檔給出的函數(shù)概覽
Here is a list of some useful NumPy functions and methods names ordered in categories. See Routines for the full list.
-
Array Creation
arange
,array
,copy
,empty
,empty_like
,eye
,fromfile
,fromfunction
,identity
,linspace
,logspace
,mgrid
,ogrid
,ones
,ones_like
, r,zeros
,zeros_like
-
Conversions
-
Manipulations
array_split
,column_stack
,concatenate
,diagonal
,dsplit
,dstack
,hsplit
,hstack
,ndarray.item
,newaxis
,ravel
,repeat
,reshape
,resize
,squeeze
,swapaxes
,take
,transpose
,vsplit
,vstack
-
Questions
-
Ordering
-
Operations
choose
,compress
,cumprod
,cumsum
,inner
,ndarray.fill
,imag
,prod
,put
,putmask
,real
,sum
-
Basic Statistics
-
Basic Linear Algebra
cross
,dot
,outer
,linalg.svd
,vdot