Reformateo de array en NumPy
Redimensionamiento de array
La redimensión significa cambiar la forma del array.
La forma del array es el número de elementos en cada dimensión.
A través de la redimensión, podemos agregar o eliminar dimensiones o cambiar el número de elementos en cada dimensión.
De 1-D a 2-D
实例
Convertir el siguiente array 1-D de 12 elementos en un array 2-D.
La dimensión más externa tendrá 4 arrays, cada uno de los cuales contendrá 3 elementos:
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)
De 1-D a 3-D
实例
Convertir el siguiente array 1-D de 12 elementos en un array 3-D.
La dimensión más externa tendrá 2 arrays, cada uno de los cuales contendrá 3 arrays, y cada uno de estos arrays contendrá 2 elementos:
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)
¿Podemos redimensionar a cualquier forma?
Sí, siempre y cuando los elementos necesarios para la redimensión sean iguales en ambas formas.
Podemos redimensionar un array 1D de 8 elementos en un array 2D de 2 filas y 4 columnas, pero no podemos redimensionarlo en un array 2D de 3 filas y 3 columnas, ya que se necesitarían 3x3 = 9 elementos.
实例
Intente convertir un array 1D de 8 elementos en un array 2D de 3 elementos en cada dimensión (esto generará un error):
import numpy as np arr = np.array([1, 2, 3, 4, 5, 6, 7, 8]) newarr = arr.reshape(3, 3) print(newarr)
¿Devuelve una copia o una vista?
实例
Verifique si el array devuelto es 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)
上面的例子返回原始数组,因此它是一个视图。
未知的维
您可以使用一个“未知”维度。
这意味着您不必在 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 的中级至高级部分。