import numpy as np
a=np.arange(5)
a.dtype,a.shape
#把arange函數創建的數組作爲列表元素,並把這個列表作爲參數傳遞給array函數,從而創建了一個3*3的矩陣
c=np.array([np.arange(3),np.arange(3),np.arange(3)])
c
c[0,1] #第一行第二列
#創建浮點小數,複數
float(12),complex(1.0)
a=np.arange(6,dtype='uint16')
b=np.arange(7,dtype='D')
a,b,a[:-1]
#numpy中每一個數組元素均爲同一數據類型,數據類型對象可以給出單個數組元素在內存中佔用的字節數(itemsize)
#sctypeDict.keys() 完整的數據型列表
a.dtype.itemsize
from numpy import dtype
t=np.dtype([('name',str),('numitems',int),('price',float)])
t
t['name']
comeon=np.array([('numpy',42,3.13),('bug',10,0.8)],dtype=t)
comeon
comeon[0]
b=np.arange(24).reshape(2,3,4)#生成2*3*4的矩陣
b
數據的索引和切片
print(b[0,0,0],'\n',b[:,0,0],'\n',b[0,:,:])
b[1,...],b[1]#等同
b[0,1,],b[0,:,-1]
b[0,::-1,-1]#從最後一行取起
b[0,::2,-1]#隔行取
b[::-1]#從第俄格矩陣取起
ravel(),flatten()
兩者所要實現的功能是一致的(將多維數組降位一維)。
這點從兩個單詞的意也可以看出來,ravel(散開,解開),flatten(變平)。
兩者的區別在於返回拷貝(copy)還是返回視圖(view)
numpy.flatten()返回一份拷貝,對拷貝所做的修改不會影響(reflects)原始矩陣,而numpy.ravel()返回的是視圖(view,也頗有幾分C/C++引用reference的意味),會影響(reflects)原始矩陣
shape(),transpose()
resize()數組維度的更改
b.ravel()
b.flatten()
b.shape=(6,4)
b
b.transpose()
b.resize((2,12))
b
數組的組合
a=np.arange(9).reshape(3,3)
c=2*a #可直接做運算
a,c
hstack((a,c))==concatenate((a,c),axis=1)
hstack(value)
value必須具有相同的數據結構,數據類型不限,可以是python的列表或者元祖,或者是numpy列表
hstack會將多個value(value_one, value_two)的相同維度的數值組合在一起,並以同value同樣的數據結構返回numpy數組
np.hstack((a,c))
np.hstack([a,c])
np.concatenate((a,c),axis=1)
np.vstack((a,c))
np.concatenate((a,c),0)
np.dstack((a,c))
oned=np.arange(2)
twice_oned=2*oned
onedcombine=np.column_stack((oned,twice_oned))
oned,twice_oned,onedcombine
np.column_stack((a,c))
np.row_stack((oned,twice_oned))
np.row_stack((a,c))
數組的分割
a #3*3
np.hsplit(a,3) #從列的方向上分割成3個數組
np.split(a,3,axis=1)
np.split(a,3,axis=0)##從行的方向上分割成3個數組
np.vsplit(a,3)
d=np.arange(27).reshape(3,3,3)
d
np.dsplit(d,3)
數組的屬性和數組的轉換
b
b.ndim
b.size
b.itemsize
b.nbytes
b.resize
b.T
b.transpose
c=np.array([1,1+9j,"av"])
c
c.ndim
d=np.array([2+7j,9j,8+2j])
d
d.real #取實數部分
d.imag #取虛數部分
c.dtype
d.dtype
b.dtype
b=np.arange(9).reshape(3,3)
f=b.flat
f
for item in f:print(item)
b.flat[2]
b.flat[[1,4]]
b.flat[[1,4]]
b.flat[[1,3]]=6
b
b.tolist() #將數組或者矩陣轉換成列表
b.astype(float)