Reforma de matriz NumPy
Transformación de matrices
Reformar significa cambiar la forma de una matriz.
La forma de una matriz es el número de elementos en cada dimensión.
Al remodelar podemos agregar o eliminar dimensiones o cambiar el número de elementos en cada dimensión.
Reformar de 1-D a 2-D
Ejemplo
Convierta la siguiente matriz 1-D con 12 elementos en una matriz 2-D.
La dimensión más externa tendrá 4 matrices, cada una con 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)
Reformar de 1-D a 3-D
Ejemplo
Convierta la siguiente matriz 1-D con 12 elementos en una matriz 3-D.
La dimensión más externa tendrá 2 matrices que contienen 3 matrices, cada una con 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 remodelar en cualquier forma?
Sí, siempre que los elementos necesarios para remodelar sean iguales en ambas formas.
Podemos remodelar una matriz 1D de 8 elementos en 4 elementos en una matriz 2D de 2 filas, pero no podemos remodelarla en una matriz 2D de 3 filas y 3 elementos, ya que eso requeriría 3x3 = 9 elementos.
Ejemplo
Intente convertir una matriz 1D con 8 elementos en una matriz 2D con 3 elementos en cada dimensión (provocará 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 Copiar o Ver?
Ejemplo
Compruebe si la matriz devuelta 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)
El ejemplo anterior devuelve la matriz original, por lo que es una vista.
Dimensión desconocida
Se le permite tener una dimensión "desconocida".
Lo que significa que no tiene que especificar un número exacto para una de las dimensiones en el método de reforma.
Pase -1
como valor y NumPy calculará este número por usted.
Ejemplo
Convierta una matriz 1D con 8 elementos en una matriz 3D con elementos 2x2:
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])
newarr = arr.reshape(2, 2, -1)
print(newarr)
Nota: No podemos pasar -1
a más de una dimensión.
Aplanando las matrices
Aplanar una matriz significa convertir una matriz multidimensional en una matriz 1D.
Podemos usar reshape(-1)
para hacer esto.
Ejemplo
Convierta la matriz en una matriz 1D:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
newarr
= arr.reshape(-1)
print(newarr)
Nota: Hay muchas funciones para cambiar las formas de las matrices en numpy flatten
y ravel
también para reorganizar los elementos rot90
, flip
, fliplr
, flipud
etc. Estos se encuentran en la sección Intermedio a Avanzado de numpy.