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 -1como 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 -1a 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 flatteny raveltambién para reorganizar los elementos rot90, flip, fliplr, flipudetc. Estos se encuentran en la sección Intermedio a Avanzado de numpy.


Ponte a prueba con ejercicios

Ejercicio:

Use el método NumPy correcto para cambiar la forma de una matriz de 1-D a 2-D.

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])

newarr = arr.(4, 3)