定義數(shù)組array:
a = np.arange(20)
創(chuàng)建多維數(shù)組
a.reshape(4,5)
定義零矩陣
np.zeros((4,5))
簡單的四則運(yùn)算已經(jīng)重載過了克锣,全部的+茵肃,-,*娶耍,/運(yùn)算都是基于全部的數(shù)組元素的免姿。
NumPy里這些運(yùn)算符也可以對標(biāo)量和數(shù)組操作,結(jié)果是數(shù)組的全部元素對應(yīng)這個(gè)標(biāo)量進(jìn)行運(yùn)算榕酒,還是一個(gè)數(shù)組胚膊。
在處理中Python會自動將整數(shù)轉(zhuǎn)換為浮點(diǎn)數(shù)(因?yàn)閿?shù)組是同質(zhì)的),并且想鹰,兩個(gè)二維數(shù)組相加要求各維度大小相同紊婉。
類似C++,+=辑舷、-=喻犁、*=、/=操作符在NumPy中同樣支持何缓。
科學(xué)計(jì)算中大量使用到矩陣運(yùn)算肢础,除了數(shù)組,NumPy同時(shí)提供了矩陣對象(matrix)碌廓。矩陣對象和數(shù)組的主要有兩點(diǎn)差別:一是矩陣是二維的传轰,而數(shù)組的可以是任意正整數(shù)維;二是矩陣的操作符進(jìn)行的是矩陣乘法谷婆,乘號左側(cè)的矩陣列和乘號右側(cè)的矩陣行要相等慨蛙,而在數(shù)組中操作符進(jìn)行的是每一元素的對應(yīng)相乘,乘號兩側(cè)的數(shù)組每一維大小需要一致纪挎。
數(shù)組可以通過asmatrix或者mat轉(zhuǎn)換為矩陣期贫。
a = np.arange(20).reshape(4, 5)
a = np.asmatrix(a)
a = mp.mat(a)
b = np.matrix('1.0 2.0; 3.0 4.0')
arange函數(shù)還可以通過arange(起始,終止异袄,步長)的方式調(diào)用生成等差數(shù)列通砍,注意含頭不含尾。
arange指定的是步長烤蜕,如果想指定生成的一維數(shù)組的長度怎么辦埠帕?好辦,linspace就可以做到:
np.linspace(0, 2, 9)
array([ 0. , 0.25, 0.5 , 0.75, 1. , 1.25, 1.5 , 1.75, 2. ])
可以通過下標(biāo)訪問來修改數(shù)組元素的值玖绿。
【陷阱】
a = np.array([[3.2, 1.5], [2.5, 4]])
b=a
這里的b只是復(fù)制了一下a的內(nèi)存地址,并沒有真正復(fù)制一份a的數(shù)據(jù)叁巨,因此改變a的值同時(shí)也會改變b的值斑匪。若想避免這個(gè)問題,使用copy函數(shù)。
b = a.copy()
可使用where函數(shù)查找特定值在數(shù)組中的位置:
loc = numpy.where(a==11)
print loc
print a[loc[0][0], loc[1][0]]
數(shù)組轉(zhuǎn)置(用于矩陣轉(zhuǎn)置)
a = np.transpose(a)
矩陣求逆
ia = nlg.inv(a)
矩陣特征值和特征向量
eig_value, eig_vector = nlg.eig(a)
矩陣塊操作
a = np.array((1,2,3))
b = np.array((2,3,4))
print np.column_stack((a,b))
在循環(huán)處理某些數(shù)據(jù)得到結(jié)果后蚀瘸,將結(jié)果拼接成一個(gè)矩陣是十分有用的狡蝶,可以通過vstack和hstack完成。
缺失值在分析中也是信息的一種贮勃,NumPy提供nan作為缺失值的記錄贪惹,通過isnan判定。nan_to_num可用來將nan替換成0寂嘉。