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