En este artículo, corregiremos el error: todas las arrays de entrada deben tener la misma cantidad de dimensiones en Python.
Casos de ocurrencia de este error:
Python3
# Importing numpy library import numpy as np # Creating a numpy array with dimension 2 * 2 np_array1 = np.array([[2, 3],[2,4]]) # Creating a numpy array with dimension 2 * 3 np_array2 = np.array([[8, 9,10], [10,11,12]]) # Concatenating the two arrays np_array3 = np.concatenate([np_array1,np_array2]) print(np_array3)
Producción:
ValueError: todas las dimensiones de la array de entrada para el eje de concatenación deben coincidir exactamente, pero a lo largo de la dimensión 1, la array en el índice 0 tiene el tamaño 2 y la array en el índice 1 tiene el tamaño 3
Motivo del error:
Cuando usamos la función de concatenación en la biblioteca NumPy para arrays NumPy, las dimensiones de ambas arrays deben coincidir durante la concatenación. En este ejemplo anterior, las dimensiones de np_array1 son 2 * 2 y las dimensiones de np_array2 son 2 * 3, lo que no es compatible con la función de concatenación para concatenar las dos arrays.
Python3
# Importing numpy library import numpy as np # Creating a numpy array with dimension 2 * 2 np_array1 = np.array([[2, 3],[2,4]]) # Creating a numpy array with dimension 2 * 3 np_array2 = np.array([[8, 9,10], [10,11,12]]) print("Dimensions of np_array1 " + str(np_array1.shape) +" != "+"Dimensions of np_array2 "+ str(np_array2.shape))
Producción:
Dimensiones de np_array1 (2, 2) != Dimensiones de np_array2 (2, 3)
Arreglando el error:
Este error se puede solucionar haciendo que las dimensiones de ambas arrays sean iguales si queremos usar solo la función de concatenación.
Método 1: usar la función de concatenación
La función numpy.concatenate() concatena una secuencia de arrays a lo largo de un eje existente.
Sintaxis:
np.concatenate([array1,array2])
Python3
# Importing numpy library import numpy as np # Creating a numpy array with dimension 2 * 2 np_array1 = np.array([[2, 3],[2,4]]) # Creating a numpy array with dimension 2 * 2 np_array2 = np.array([[8, 9], [10,11]]) # Concatenating the two arrays np_array3 = np.concatenate([np_array1,np_array2]) print(np_array3)
Producción:
En la salida, np_array1 se agrega o apila en la parte superior de la array np_array2.
[[ 2 3] [ 2 4] [ 8 9] [10 11]]
Método 2: Usar la función row_stack() o column_stack()
Otra forma de corregir este error usando la función row_stack() o column_stack() si la dimensión de la columna de ambas arrays es la misma, entonces se puede usar la función row_stack() y si la dimensión de la columna de una array y la dimensión de la fila de la la segunda array es la misma, entonces la función column_stack() se puede usar para corregir el error y las arrays se apilan en la otra array en consecuencia.
Sintaxis:
np.column_stack((array1,array2))
Python3
# Importing numpy library import numpy as np # Creating a numpy array with dimension 2 * 2 np_array1 = np.array([[2, 3],[2,4]]) # Creating a numpy array with dimension 2 * 3 np_array2 = np.array([[8, 9,10], [10,11,12]]) # Using the column_stack() function np_array3 = np.column_stack((np_array1,np_array2)) print(np_array3)
Producción:
En la salida, np_array1 se agrega o apila a la izquierda de la array np_array2.
[[ 2 3 8 9 10] [ 2 4 10 11 12]]
Sintaxis para la función row_stack():
np.row_stack((array1,array2))
Python3
# Importing numpy library import numpy as np # Creating a numpy array with dimension 1 * 3 np_array1 = np.array([2, 3,4]) # Creating a numpy array with dimension 2 * 3 np_array2 = np.array([[8, 9,10], [10,11,12]]) # Using the row_stack() function np_array3 = np.row_stack((np_array1,np_array2)) print(np_array3)
Producción:
En la salida, np_array1 se agrega o apila en la parte superior de la array np_array2.
[[ 2 3 4] [ 8 9 10] [10 11 12]]
Método 3: Usar la función np.c()
La otra forma de corregir el error es usar el np. función c_() que funciona igual que la función np.column_stack().
Sintaxis para la función column_stack():
np.c_[array1,array2]
Python3
# Importing numpy library import numpy as np # Creating a numpy array with dimension 2 * 2 np_array1 = np.array([[2, 3],[2,4]]) # Creating a numpy array with dimension 2 * 3 np_array2 = np.array([[8, 9,10], [10,11,12]]) # Using the np.c_() function np_array3 = np.c_[np_array1,np_array2] print(np_array3)
Producción:
En la salida, np_array1 se agrega o apila a la izquierda de la array np_array2.
[[ 2 3 8 9 10] [ 2 4 10 11 12]]
Publicación traducida automáticamente
Artículo escrito por lokeshpotta20 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA