Python發(fā)展至今,已經(jīng)有越來越多的人使用python進行科學技術(shù),NumPY是python中的一款高性能科學計算和數(shù)據(jù)分析的基礎包。
ndarray
ndarray(以下簡稱數(shù)組)是numpy的數(shù)組對象,需要注意的是,它是同構(gòu)的,也就是說其中的所有元素必須是相同的類型。其中每個數(shù)組都有一個shape和dtype。
shape既是數(shù)組的形狀,比如
1 import numpy as np 2 from numpy.random import randn 3 4 arr = randn(12).reshape(3, 4) 5 6 arr 7 8 [[ 0.98655235 1.20830283 -0.72135183 0.40292924] 9 [-0.05059849 -0.02714873 -0.62775486 0.83222997]10 [-0.84826071 -0.29484606 -0.76984902 0.09025059]]11 12 arr.shape 13 (3, 4)
其中(3, 4)即代表arr是3行4列的數(shù)組,其中dtype為float64
一下函數(shù)可以用來創(chuàng)建數(shù)組
array | 將輸入數(shù)據(jù)轉(zhuǎn)換為ndarray,類型可制定也可默認 |
asarray | 將輸入轉(zhuǎn)換為ndarray |
arange | 類似內(nèi)置range |
ones、ones_like | 根據(jù)形狀創(chuàng)建一個全1的數(shù)組、后者可以復制其他數(shù)組的形狀 |
zeros、zeros_like | 類似上面,全0 |
empty、empty_like | 創(chuàng)建新數(shù)組、只分配空間 |
eye、identity | 創(chuàng)建對角線為1的對角矩陣 |
數(shù)組的轉(zhuǎn)置和軸對稱
轉(zhuǎn)置是多維數(shù)組的基本運算之一??梢允褂?T屬性或者transpose()來實現(xiàn)。.T就是進行軸對換而transpose則可以接收參數(shù)進行更豐富的變換
arr = np.arange(6).reshape((2,3))print arr[[0 1 2] [3 4 5]]print arr.T[[0 3] [1 4] [2 5]]arr = np.arange(24).reshape((2,3,4))print arr[[[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]] [[12 13 14 15] [16 17 18 19] [20 21 22 23]]]print arr.transpose((0,1,2))[[[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]] [[12 13 14 15] [16 17 18 19] [20 21 22 23]]]
數(shù)組的運算
大小相等的數(shù)組之間做任何算術(shù)運算都會將運算應用到元素級別。
1 arr = np.arange(9).reshape(3, 3) 2 print arr 3 4 [[0 1 2] 5 [3 4 5] 6 [6 7 8]] 7 8 print arr*arr 9 10 [[ 0 1 4]11 [ 9 16 25]12 [36 49 64]]13 14 print arr+arr15 16 [[ 0 2 4]17 [ 6 8 10]18 [12 14 16]]19 20 print arr*421 22 [[ 0 4 8]23 [12 16 20]24 [24 28 32]]
numpy的簡單計算中,ufunc通用函數(shù)是對數(shù)組中的數(shù)據(jù)執(zhí)行元素級運算的函數(shù)。
如:
arr = np.arange(6).reshape((2,3))print arr[[0 1 2] [3 4 5]]print np.square(arr)[[ 0 1 4] [ 9 16 25]]
類似的有:abs,fabs,sqrt,square,exp,log,sign,ceil,floor,rint,modf,isnan,isfinite,isinf,cos,cosh,sin,sinh,tan,tanh,
add,subtract,multiply,power,mod,equal,等等