Wertfehler: 2d-Array erwartet, stattdessen 1d-Array erhalten
- Numpy-Array in Python
- Erstellen Sie ein Numpy-Array in Python
-
Ursache von
ValueError 2D-Array erwartet, stattdessen 1D-Array erhalten
in Python -
ValueError: Expected 2D Array, got 1D Array stattdessen
in Python behoben
![Wertfehler: 2d-Array erwartet, stattdessen 1d-Array erhalten](/img/Python/feature-image---valueerror-expected-2d-array-got-1d-array-instead.webp)
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]
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.
LinkedInVerwandter Artikel - Python Error
- Adresse wird bereits verwendet Fehler in Python
- AttributeError: __Exit__ in Python
- AttributeError: 'Dict'-Objekt hat kein Attribut 'Append' in Python
- AttributeError: 'NoneType'-Objekt hat kein Attribut 'Text' in Python
- AttributeError: Int-Objekt hat kein Attribut
- AttributeError: Modul Urllib hat keine Attributanforderung