Riformattazione di Array NumPy
Reshaping dell'array
Reshaping significa modificare la forma dell'array.
La forma dell'array è il numero di elementi in ogni dimensione.
Tramite reshaping possiamo aggiungere o rimuovere dimensioni o modificare il numero di elementi in ogni dimensione.
Da 1-D a 2-D
实例
Converti il seguente array 1-D con 12 elementi in un array 2-D.
La dimensione più esterna avrà 4 array, ciascuno dei quali contiene 3 elementi:
import numpy as np arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]) newarr = arr.reshape(4, 3) print(newarr)
Da 1-D a 3-D
实例
Converti il seguente array 1-D con 12 elementi in un array 3-D.
La dimensione più esterna avrà 2 array, ciascuno dei quali contiene 3 array, ognuno con 2 elementi:
import numpy as np arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]) newarr = arr.reshape(2, 3, 2) print(newarr)
Possiamo reshaping in qualsiasi forma?
Sì, purché gli elementi necessari per il reshaping siano uguali in entrambe le forme.
Possiamo reshaping un array 1D con 8 elementi in un array 2D di 2 righe con 4 elementi, ma non possiamo reshaping in un array 2D di 3 righe con 3 elementi, perché ciò richiederebbe 3x3 = 9 elementi.
实例
Prova a convertire un array 1D con 8 elementi in un array 2D con 3 elementi per dimensione (provocherà un errore):
import numpy as np arr = np.array([1, 2, 3, 4, 5, 6, 7, 8]) newarr = arr.reshape(3, 3) print(newarr)
Restituisce una copia o una vista?
实例
Controlla se l'array restituito è una copia o una vista:
import numpy as np arr = np.array([1, 2, 3, 4, 5, 6, 7, 8]) print(arr.reshape(2, 4).base)
L'esempio sopra restituisce l'array originale, quindi è una vista.
未知的维
您可以使用一个“未知”维度。
这意味着您不必在 reshape 方法中为维度之一指定确切的数字。
传递 -1
作为值,NumPy 将为您计算该数字。
实例
将 8 个元素的 1D 数组转换为 2x2 元素的 3D 数组:
import numpy as np arr = np.array([1, 2, 3, 4, 5, 6, 7, 8]) newarr = arr.reshape(2, 2, -1) print(newarr)
注释:我们不能将 -1
传递给一个以上的维度。
展平数组
展平数组(Flattening the arrays)是指将多维数组转换为 1D 数组。
我们可以使用 reshape(-1)
来做到这一点。
实例
把数组转换为 1D 数组:
import numpy as np arr = np.array([[1, 2, 3], [4, 5, 6]]) newarr = arr.reshape(-1) print(newarr)
注释:有很多功能可以更改 numpy flatten、ravel 中数组形状,还可以重新排列元素 rot90、flip、fliplr、flipud 等。这些功能属于 numpy 的中级至高级部分。