reshape(shape) : 不改變數組元素,返回一個shape形狀的數組,原數組不變。是對每行元素進行處理
resize(shape) : 與.reshape()功能一致,但修改原數組
In [1]: a = np.arange(20)#原數組不變In [2]: a.reshape([4,5])Out[2]:array([[ 0, 1, 2, 3, 4], [ 5, 6, 7, 8, 9], [10, 11, 12, 13, 14], [15, 16, 17, 18, 19]]) In [3]: aOut[3]:array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]) #修改原數組In [4]: a.resize([4,5]) In [5]: aOut[5]:array([[ 0, 1, 2, 3, 4], [ 5, 6, 7, 8, 9], [10, 11, 12, 13, 14], [15, 16, 17, 18, 19]])
.swapaxes(ax1,ax2) : 將數組n個維度中兩個維度進行調換,不改變原數組
In [6]: a.swapaxes(1,0)Out[6]:array([[ 0, 5, 10, 15], [ 1, 6, 11, 16], [ 2, 7, 12, 17], [ 3, 8, 13, 18], [ 4, 9, 14, 19]])
.flatten() : 對數組進行降維,返回折疊后的一維數組,原數組不變
In [7]: a.flatten()Out[7]:array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19])
將多個二維數組合并為一個三維數組
方法一:
對于兩個(或者多個)同一維度的矩陣,直接利用np.array()重新構造一個array,這樣可以變相起到擴展維數的作用。例如:
import numpy as np a = np.array([[1,2,3],[4,5,6]])b = np.array([[2,2,3],[4,5,6]])c = np.array([[3,2,3],[4,5,6]])print('矩陣a:/n',a)print('維數:',a.shape) com = np.array([a,b,c])print('合并矩陣:/n',com)print('維數:',com.shape) 輸出結果為: 矩陣a: [[1 2 3] [4 5 6]]維數: (2, 3)合并矩陣: [[[1 2 3] [4 5 6]] [[2 2 3] [4 5 6]] [[3 2 3] [4 5 6]]]維數: (3, 2, 3)
方法二:
但是,如果兩個array,使用方法一時會出現如下結果:
import numpy as np aa = np.array([[[1,2,3],[4,5,6]],[[2,2,3],[4,5,6]],[[3,2,3],[4,5,6]]])a = np.array([[4,2,3],[4,5,6]]) com = np.array([aa,a])print('合并矩陣:/n',com)print('維數:',com.shape) 輸出結果: 合并矩陣: [array([[[1, 2, 3], [4, 5, 6]], [[2, 2, 3], [4, 5, 6]], [[3, 2, 3], [4, 5, 6]]]) array([[4, 2, 3], [4, 5, 6]])]維數: (2,)
可以看到:輸出的維數不對,以上方法就不適用了。
那么,我們就需要利用np.append和array.reshape()函數對數組進行拼接之后重組,具體實現如下:
import numpy as np aa = np.array([[[1,2,3],[4,5,6]],[[2,2,3],[4,5,6]],[[3,2,3],[4,5,6]]])a = np.array([[4,2,3],[4,5,6]])data = np.append(aa,a)#先拼接成一個行向量print(data) dim = aa.shape#獲取原矩陣的維數print('原矩陣維數:',dim)data1 = data.reshape(dim[0]+1,dim[1],dim[2])#再通過原矩陣的維數重新組合 print('合并矩陣:/n',data1)print('維數:',data1.shape)
現在來看一下用reshape將二維數據升為三維后的數據分布情況:
新聞熱點
疑難解答