2015年1月9日 星期五

[Python] Numpy常用的一般語法

假設有一個m*n矩陣A:

查矩陣維度:

[In] np.ndim(A)

查矩陣形狀:

[In] A.shape

查矩陣元素形態:

[In] A.dtype

利用索引查元素的值:
[In] A[m][n] #或是A[m, n]皆可


建立一個元素皆為0的m*n矩陣:

[In] np.zeros((m, n))

建立一個元素皆為1的m*n矩陣:

[In] np.ones((m, n))

建立一個n*n單位矩陣(方陣,對角線為1,其餘為0):

[In] np.eye(n)

建立一個元素值為0到n-1的一維陣列(ndarray物件):

[In] np.arange(n)

arange()其實就類似python內建的range(),python的range()會建立一個list,arrange()則是建立了一個ndarray物件,其可搭配reshape()塑形成想要的形狀:

[In] np.arange(n).reshape((m, n))

轉換矩陣元素形態:
[In] A.astype( ["int" | ''float "] )

astype()可以將矩陣的元素形態從integer轉換成float,或是從float轉換成integer,也可以從string轉換成integer或是float。
[In] A = np.array(['1', '2', '3', '4'])
[In] A.astype('int')
[Out] array([1, 2, 3, 4])

注意,就算將矩陣的元素形態從integer轉成integer(也就是形態其實沒變),其仍會建立一個新矩陣,而非套用在原矩陣上。

不過,對Numpy的矩陣做slice,是對原矩陣操作,這樣可以提高效能及節省記憶體用量,對python的list做slice則是會複製一份slice。如果非得複製一份slice,可以用:
[In] A[m:n].copy()

沒有留言:

張貼留言