Wertfehler: 2d-Array erwartet, stattdessen 1d-Array erhalten

Fariba Laiq 21 Juni 2023
  1. Numpy-Array in Python
  2. Erstellen Sie ein Numpy-Array in Python
  3. Ursache von ValueError 2D-Array erwartet, stattdessen 1D-Array erhalten in Python
  4. ValueError: Expected 2D Array, got 1D Array stattdessen in Python behoben
Wertfehler: 2d-Array erwartet, stattdessen 1d-Array erhalten

Wie Sie wissen, trifft jede Programmiersprache auf viele Fehler, einige zur Laufzeit, andere zur Kompilierzeit. Python stößt manchmal auf Array-Fehler, wenn die numpy-Bibliothek verwendet wird.

Der Fehler ValueError: Expected 2D array, got 1D array got tritt auf, wenn Sie in numpy ein 1-dimensionales Array anstelle eines 2-dimensionalen Arrays übergeben.

Numpy-Array in Python

Numpy ist eine Open-Source-Bibliothek, die sich mit Arrays und mathematischen Operationen befasst. In Python haben Sie Listen, die uns den Zweck von Arrays liefern, aber die numpy-Ersteller behaupten, dass sie 50x schnellere Arrays als Listen beweisen.

Dies ist einer der Hauptzwecke der Verwendung des numpy-Arrays.

Erstellen Sie ein Numpy-Array in Python

Die Syntax der numpy-Arrays ist einfach. Sie müssen die numpy-Bibliothek in Ihr Programm importieren und entsprechend verwenden.

# Python 3.x
import numpy as np

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

Ausgang:

#Python 3.x
[2 4 6]

Ursache von ValueError 2D-Array erwartet, stattdessen 1D-Array erhalten in Python

Dieser Fehler tritt auf, wenn Sie ein eindimensionales Array in einer Funktion übergeben. Die Funktion erfordert jedoch ein zweidimensionales Array, sodass Sie statt eines 2D-Arrays ein Array mit einer einzelnen Dimension übergeben haben.

Dies geschieht meistens mit einem maschinellen Lernalgorithmus in der Methode predict().

Schauen wir uns nun dieses Szenario an.

# 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]))

Ausgang:

#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.

ValueError: Expected 2D Array, got 1D Array stattdessen in Python behoben

Verwenden Sie bei den Daten doppelte eckige Klammern

Nachfolgend haben wir den Fehler im vorherigen Beispiel behoben. Der einfachste Weg, den Fehler zu beheben, besteht darin, ein dimensionales Array in ein zweidimensionales Array zu konvertieren.

Sie können [0.7,1.10] in eine weitere eckige Klammer einschließen, um es in ein 2D-Array umzuwandeln, wenn Sie es an die Methode predict() übergeben.

Beispielcode:

# 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]]))

Ausgang:

#Python 3.x
[1]

Forme das Array mit reshape() um

Eine andere Möglichkeit, ein 1D-Array in ein 2D-Array umzuwandeln, besteht darin, das Array mit der Methode reshape() umzuformen. Sie können ein Array in Python mit der Methode reshape() umformen.

Die Anzahl der Elemente in jeder Dimension bestimmt die Form eines Arrays. Sie können Array-Dimensionen mithilfe der Umformung hinzufügen oder entfernen.

Im folgenden Code sehen Sie die Dimensionen des numpy-Arrays vor und nach der Verwendung der reshape()-Methode.

Beispielcode:

# 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))

Ausgang:

#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

Verwandter Artikel - Python Error