Valueerror: matriz 2d esperada, en su lugar se obtuvo una matriz 1d

Fariba Laiq 21 junio 2023
  1. Matriz Numpy en Python
  2. Crear una matriz Numpy en Python
  3. Causa de ValueError Se esperaba una matriz 2D, en su lugar se obtuvo una matriz 1D en Python
  4. Arreglar ValueError: matriz 2D esperada, obtuvo matriz 1D en su lugar en Python
Valueerror: matriz 2d esperada, en su lugar se obtuvo una matriz 1d

Como sabe, cada lenguaje de programación encuentra muchos errores, algunos en tiempo de ejecución, otros en tiempo de compilación. Python a veces encuentra errores de matriz cuando usa la biblioteca numpy.

El error ValueError: matriz 2D esperada, obtuvo una matriz 1D en su lugar ocurre cuando pasa una matriz unidimensional en lugar de una matriz bidimensional en numpy.

Matriz Numpy en Python

Numpy es una biblioteca de código abierto que se ocupa de matrices y operaciones matemáticas. En Python, tiene listas que nos proporcionan el propósito de las matrices, pero los creadores numpy afirman que prueban que las matrices son 50 veces más rápidas que las listas.

Es uno de los propósitos principales de usar la matriz numpy.

Crear una matriz Numpy en Python

La sintaxis de las matrices numpy es sencilla. Debe importar la biblioteca numpy a su programa y usarla en consecuencia.

# Python 3.x
import numpy as np

# creating a numpy array
array1 = np.array([2, 4, 6])
print(array1)

Producción :

#Python 3.x
[2 4 6]

Causa de ValueError Se esperaba una matriz 2D, en su lugar se obtuvo una matriz 1D en Python

Este error ocurre cuando pasa una matriz unidimensional en una función. Sin embargo, la función requiere una matriz bidimensional, por lo que en lugar de proporcionar una matriz 2D, pasó una matriz con una sola dimensión.

Ocurre principalmente usando un algoritmo de aprendizaje automático en el método predict().

Ahora echemos un vistazo a este escenario.

# Python 3.x
import numpy as np
from sklearn import svm

X = np.array([[2, 1], [4, 5], [2.6, 3.5], [6, 6], [0.8, 1], [7, 10]])
y = [1, 0, 1, 0, 1, 0]
classifier = svm.SVC(kernel="linear", C=1.0)
classifier.fit(X, y)
print(classifier.predict([0.7, 1.10]))

Producción :

#Python 3.x
ValueError: Expected 2D array, got 1D array instead:
array=[0.7 1.1].
Reshape your data either using array.reshape(-1, 1) if your data has a single feature or array.reshape(1, -1) if it contains a single sample.

Arreglar ValueError: matriz 2D esperada, obtuvo matriz 1D en su lugar en Python

Use corchetes dobles con los datos

A continuación hemos resuelto el error del ejemplo anterior. La forma más sencilla de corregir el error es convertir una matriz dimensional en una matriz bidimensional.

Puede encerrar [0.7,1.10] entre otro corchete para convertirlo en una matriz 2D al pasarlo al método predict().

Código de ejemplo:

# Python 3.x
import numpy as np
from sklearn import svm

X = np.array([[2, 1], [4, 5], [2.6, 3.5], [6, 6], [0.8, 1], [7, 10]])
y = [1, 0, 1, 0, 1, 0]
classifier = svm.SVC(kernel="linear", C=1.0)
classifier.fit(X, y)
print(classifier.predict([[0.7, 1.10]]))

Producción :

#Python 3.x
[1]

Reformar la matriz usando reformar()

Otra forma de convertir un arreglo 1D a 2D es remodelar el arreglo usando el método reformar(). Puede remodelar una matriz en Python utilizando el método reformar ().

El número de elementos en cada dimensión determina la forma de una matriz. Puede agregar o eliminar dimensiones de matriz mediante la remodelación.

En el siguiente código, puede ver las dimensiones de la matriz numpy antes y después de usar el método remodelar ().

Código de ejemplo:

# Python 3.x
import numpy as np
from sklearn import svm

X = np.array([[2, 1], [4, 5], [2.6, 3.5], [6, 6], [0.8, 1], [7, 10]])
y = [1, 0, 1, 0, 1, 0]
classifier = svm.SVC(kernel="linear", C=1.0)
classifier.fit(X, y)
test = np.array([0.7, 1.10])
print("Dimension before:", test.ndim)
test = test.reshape(1, -1)
print("Dimension now:", test.ndim)
print("Classifier Result:", classifier.predict(test))

Producción :

#Python 3.x
Dimension before: 1
Dimension now: 2
Classifier Result: [1]
Fariba Laiq avatar Fariba Laiq avatar

I am Fariba Laiq from Pakistan. An android app developer, technical content writer, and coding instructor. Writing has always been one of my passions. I love to learn, implement and convey my knowledge to others.

LinkedIn

Artículo relacionado - Python Error