Reformar array NumPy

NumPy es un paquete de procesamiento de arrays de propósito general. Proporciona un objeto de array multidimensional de alto rendimiento y herramientas para trabajar con estas arrays. Es el paquete fundamental para la computación científica con Python. Numpy se usa básicamente para crear una array de n dimensiones.
Reformar una array numpy simplemente significa cambiar la forma de la array dada, la forma básicamente indica la cantidad de elementos y la dimensión de la array, al remodelar una array podemos agregar o eliminar dimensiones o cambiar la cantidad de elementos en cada dimensión.
Para remodelar una array numpy, usamos el método de remodelación con la array dada. 
 

Sintaxis : array.reshape(shape)
Argumento : Toma tupla como argumento, tupla es la nueva forma a formar
Devolución : Devuelve numpy.ndarray
 

Nota: También podemos usar el comando np.reshape(array, shape) para remodelar la array
Remodelación: 1-D a 2D 
En este ejemplo, remodelaremos la array 1-D de forma (1, n) a una array 2-D de forma (N, M) aquí M debe ser igual a n/N allí para N debe ser factor de n. 
 

Python3

# importing numpy
import numpy as np
 
# creating a numpy array
array = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16])
 
# printing array
print("Array : " + str(array))
 
# length of array
n = array.size
 
# N-D array N dimension
N = 4
 
# calculating M
M = n//N
 
# reshaping numpy array
# converting it to 2-D from 1-D array
reshaped1 = array.reshape((N, M))
 
# printing reshaped array
print("First Reshaped Array : ")
print(reshaped1)
 
# creating another reshaped array
reshaped2 = np.reshape(array, (2, 8))
 
# printing reshaped array
print("Second Reshaped Array : ")
print(reshaped2)

Producción : 
 

Array : [ 1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16]
First Reshaped Array : 
[[ 1  2  3  4]
 [ 5  6  7  8]
 [ 9 10 11 12]
 [13 14 15 16]]
Second Reshaped Array : 
[[ 1  2  3  4  5  6  7  8]
 [ 9 10 11 12 13 14 15 16]]

Remodelación: 1-D a 3-D 
En esto, veremos cómo podemos remodelar una array 1-D a una array de dimensión 3-D. Una array 3D es la array 1D de arrays 2D. 
 

Python3

# importing numpy
import numpy as np
 
# creating a numpy array
array = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16])
 
# printing array
print("Array : " + str(array))
 
 
# reshaping numpy array
# converting it to 3-D from 1-D array
reshaped = array.reshape((2, 2, 4))
 
# printing reshaped array
print("Reshaped 3-D Array : ")
print(reshaped)

Producción : 
 

Array : [ 1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16]
Reshaped 3-D Array : 
[[[ 1  2  3  4]
  [ 5  6  7  8]]

 [[ 9 10 11 12]
  [13 14 15 16]]]

Remodelación de ND a array 1-D 
En este ejemplo, veremos cómo podemos remodelar una array 2-D o 3-D para formar una array 1-D. También podemos usar remodelar (-1) para hacer esto, aquí -1 es la dimensión desconocida. 
 

Python3

# importing numpy
import numpy as np
 
# creating a numpy array
array = np.array([[1, 2, 3],
                 [4, 5, 6],
                 [7, 8, 9]])
 
# printing array
print(" 2-D Array : ")
print(array)
 
 
# reshaping numpy array
# converting it to 1-D from 2-D array
reshaped = array.reshape((9))
 
# or we can use unknown dimension
# reshaped = array.reshape((-1))
 
# printing reshaped array
print("Reshaped 1-D Array : ")
print(reshaped)

Producción : 
 

 2-D Array : 
[[1 2 3]
 [4 5 6]
 [7 8 9]]
Reshaped 1-D Array : 
[[1 2 3 4 5 6 7 8 9]]

Remodelar usando una dimensión desconocida 
Podemos remodelar una array aunque no conozcamos todas las nuevas dimensiones usando -1 como una de las dimensiones, pero debemos conocer todas las otras dimensiones para usar la dimensión desconocida 
 

Python3

# importing numpy
import numpy as np
 
# creating a numpy array
array = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16])
 
# printing array
print("Array : " + str(array))
 
 
# reshaping numpy array
# converting it to 3-D from 1-D array
reshaped1 = array.reshape((2, 2, -1))
 
# printing reshaped array
print("First Reshaped Array : ")
print(reshaped1)
 
 
# converting it to 2-D array
reshaped2 = array.reshape((4, -1))
 
# printing reshaped array
print("Second Reshaped Array : ")
print(reshaped2)

Producción : 
 

Array : [ 1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16]
First Reshaped Array : 
[[[ 1  2  3  4]
  [ 5  6  7  8]]

 [[ 9 10 11 12]
  [13 14 15 16]]]
Second Reshaped Array : 
[[ 1  2  3  4]
 [ 5  6  7  8]
 [ 9 10 11 12]
 [13 14 15 16]]

Se producen errores durante la remodelación 
Cuando intentamos remodelar una array a una forma que no es matemáticamente posible, se genera un error de valor que dice que no se puede remodelar la array. Por ejemplo, cuando intentamos remodelar una array 1-D con 4 elementos en una array 2-D de dimensión (3, 3) no es posible ya que la nueva array requiere 9 elementos 
 

Python3

# importing numpy
import numpy as np
 
# creating a numpy array
array = np.array([[1, 2, 3],
                 [4, 5, 6],
                 [7, 8, 9]])
 
# printing array
print(" 2-D Array : ")
print(array)
 
 
# reshaping numpy array
# converting it to 1-D from 2-D array
# reshaping it into 1, 5
reshaped = array.reshape((1, 5))
 
# or we can use
 
# printing reshaped array
print("Reshaped 1-D Array : ")
print(reshaped)
ValueError: cannot reshape array of size 9 into shape (1, 5)

Publicación traducida automáticamente

Artículo escrito por rakshitarora y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *