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 的中级至高级部分。