python numpy 如何獲取和更改陣列(array)的形狀、維數-shape&reshape
主要用到shape, reshape函式
我們先搞清np.ndarrayd陣列的特點
import numpy as np
ex = np.arange(0,12,1)
ex
# 括號裡的0可以省略,也可以換成其他起始數,1是步長。執行上述程式碼,我們
# 發現ex只是一個序列並沒有維數(形狀)上的特徵
>>> array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])
# 接下來我們用reshape來更改陣列的形狀
ex1 = np.arange(12).reshape(1,12) # 1是行數,2是列數
ex2 = np.arange (12).reshape((1,12)) # 形狀以陣列形式傳入
ex3 = np.arange(12).reshape(1,-1)
# -1代表依據前面已經給定的行數來確定列數
ex1
>>> array([[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]])
# ex1,ex2,ex3 出來的陣列相同,如上所示,跟ex區別的地方在於多了一個
# 中括號,所以ex1有了形狀,像是1*12的矩陣。當然要真正變成矩陣還需要
# np.mat()函式
#
接下來我們將上面ex改成的一個3*4的陣列
ex4 = ex.reshape(3, 4) # or ex4=ex.reshape(3,-1)
ex4
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
如果我們要獲取一個數組的形狀,用shape函式即可
ex4.shape
(3L, 4L)
輸出的是一個tuple,裡面的元素是格式為long的數字,個人認為跟int,float沒什麼區別,感興趣的可以去百度。
另一種更改陣列形狀的方法
ex.shape = 3,4 # or ex.shape=(3,4)