Arreglar ValueError: configurar un elemento de matriz con una secuencia en Python

Zeeshan Afridi 8 octubre 2023
  1. Matriz Numpy en Python
  2. Crear una matriz Numpy en Python
  3. Causas del error ValueError: establecer un elemento de matriz con una secuencia en Python
  4. Solucione el error ValueError: establecer un elemento de matriz con una secuencia en Python
Arreglar ValueError: configurar un elemento de matriz con una secuencia en Python

En Python, la matriz es una de las estructuras de datos más comunes y útiles, una colección de más de un valor. Se accede a los elementos de la matriz a través de los índices, que son la ubicación del elemento.

Es posible que haya interactuado de alguna manera con el error ValueError: configuración de un elemento de matriz con una secuencia en algún momento. Este ValueError ocurre principalmente en dos escenarios; la primera es cuando intenta asignar varios valores a un solo índice de matriz y la segunda es cuando intenta asignar un tipo de datos no válido a la matriz definida.

Como sabemos, las matrices son de naturaleza homogénea. Aceptan un solo tipo de datos en toda la matriz.

Matriz Numpy en Python

Numpy es una biblioteca de código abierto que se usa principalmente para métricas, álgebra lineal, transformada de Fourier, etc. Fue creada por Travis Oliphant en 2005.

En Python, tenemos listas que nos brindan el propósito de las matrices, pero los creadores de Numpy afirman que demuestran que las matrices son 50 veces más rápidas que las listas. Este es uno de los propósitos principales del uso de la matriz Numpy.

Crear una matriz Numpy en Python

La sintaxis de la matriz Numpy es muy simple. Debe importar la biblioteca numpy a su programa y usarla en consecuencia.

# import numpy library
import numpy as np

# creating a numpy array
arr = np.array([1, 2, 4, 5, 6])

print(arr)

Producción :

[1 2 4 5 6]

También podemos convertir una matriz convencional en una matriz Numpy.

# import numpy library
import numpy as np

conventional_array = [1, 2, 3, 4, 5]
print("The data type conventional array is: ", type(conventional_array))

# converting a conventional array into a numpy array
arr = np.array(conventional_array)

print("The data type of numpy array is: ", type(arr))
print(arr)

Producción :

The data type conventional array is:  <class 'list'>
The data type of numpy array is:  <class 'numpy.ndarray'>
[1 2 3 4 5]

El tipo de arreglo convencional pertenece a la clase list, mientras que después de convertirlo en un arreglo Numpy, ahora pertenece a la clase numpy.ndarray.

Causas del error ValueError: establecer un elemento de matriz con una secuencia en Python

Como se discutió, el error ValueError: configuración de un elemento de matriz con una secuencia ocurre en Python cuando intenta asignar más de un valor a una sola posición o tipos de datos incorrectos a una matriz. Como sabemos, los arreglos son estructuras de datos homogéneas que no pueden almacenar varios tipos de datos en un solo arreglo.

Comprendamos ambos escenarios a través de ejemplos.

# import numpy library
import numpy as np

arr = [1, 2, 3, 4, 5, 6, 7]
numpy_arr = np.array(arr)

# print the element at 0 index, which is the first element
print("The first element of the array: ", numpy_arr[0])

# assign two values (1,2) to the 0th index  --> Error
numpy_arr[0] = 1, 2

Producción :

The first element of the array:  1
ValueError: setting an array element with a sequence.

Como puedes ver en el último código del programa anterior, cuando tratamos de asignar dos valores 1,2 al índice 0 de numpy_arr, obtenemos el error ValueError: set a array element with a sequence.

Esto se debe a que solo podemos almacenar un único valor en un índice. Sin embargo, podemos reemplazarlo con otro valor para que un solo índice apunte a un valor individual.

Ahora, echemos un vistazo al segundo escenario.

# import numpy library
import numpy as np

# Creating an array
array1 = [1, 2, [0, 0], 4, 5]
print(array1)
print("The data type of the conventional array is: ", type(array1))

# This causes Value error
np_array = np.array(array1, int)

print("\n", np_array)
print("The data type of of numpy array is: ", type(np_array))

Producción :

[1, 2, [0, 0], 4, 5]
The data type of the conventional array is:  <class 'list'>
ValueError: setting an array element with a sequence.

En este caso, el tipo de datos que asignamos a la matriz numpy es responsable de este error. En esta declaración np_array = np.array(array1, int), el segundo parámetro int está causando este error.

Como puede ver, la clase de array1 es una lista, por lo que no es posible convertirla en int directamente.

Solucione el error ValueError: establecer un elemento de matriz con una secuencia en Python

Ahora hemos visto en los ejemplos anteriores qué causa el ValueError. Echemos un vistazo y comprendamos cómo solucionar este ValueError.

El primer escenario es muy simple. Solo asigna un valor a un solo índice.

# import numpy library
import numpy as np

# creating a numpy array
numpy_arr = np.array([1, 2, 3, 4, 5])
print(numpy_arr)

# assigning 0 value at the 0th index
numpy_arr[0] = 0
print(numpy_arr)

Producción :

[1 2 3 4 5]
[0 2 3 4 5]

En el segundo escenario, podemos utilizar un tipo de dato universal aceptado en todos los casos, objeto. Veámoslo en el siguiente ejemplo.

# import numpy library
import numpy as np

# creating an array
arr = [1, 2, [9, 8], 3, 4]

# This causes Value error
np_arr = np.array(arr, object)

print(np_arr)

Producción :

[1 2 list([9, 8]) 3 4]

Como puede ver, después de que cambiamos el tipo de datos de int a object, el programa funcionó sin problemas. Debido a que objeto es el tipo de datos universal, trata cada parte de la matriz como un objeto, ya sea una lista o un único valor int.

Zeeshan Afridi avatar Zeeshan Afridi avatar

Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.

LinkedIn

Artículo relacionado - Python Error