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)