Valueerror: Expected 2d Array, Got 1d Array Instead
 Numpy Array in Python
 Create a Numpy Array in Python

Cause of
ValueError Expected 2D array, got 1D array instead
in Python 
Fix
ValueError: Expected 2D Array, got 1D Array instead
in Python
As you know, every programming language encounters many errors, some at runtime, others at compile time. Python sometimes encounters array errors when using the numpy library.
The ValueError: Expected 2D array, got 1D array instead
error occurs when you pass a 1dimensional array instead of a 2dimensional array in numpy.
Numpy Array in Python
Numpy is an opensource library that deals with arrays and mathematical operations. In Python, you have lists that provide us with the purpose of arrays, but the numpy creators claim that they prove 50x
faster arrays than lists.
It is one of the core purposes of using the numpy array.
Create a Numpy Array in Python
The syntax of the numpy arrays is straightforward. You must import the numpy library to your program and use as accordingly.
#Python 3.x
import numpy as np
# creating a numpy array
array1 = np.array([2,4,6])
print(array1)
Output:
#Python 3.x
[2 4 6]
Cause of ValueError Expected 2D array, got 1D array instead
in Python
This error occurs when you pass a 1dimensional array in a function. However, the function requires a 2dimensional array, so instead of giving a 2D array, you passed an Array with a Single Dimension.
It mostly happens using a machine learning algorithm in the predict()
method.
Now let’s take a look at this scenario.
#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]))
Output:
#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.
Fix ValueError: Expected 2D Array, got 1D Array instead
in Python
Use Double Square Brackets With the Data
Below we have resolved the error in the previous example. The simplest way to fix the error is to convert a dimensional array to a 2dimensional array.
You can enclose [0.7,1.10]
in another square bracket to convert it to a 2D array when passing it to the predict()
method.
Example code:
#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]]))
Output:
#Python 3.x
[1]
Reshape the Array Using reshape()
Another way to convert a 1D array to 2D is to reshape the array using the reshape()
method. You can reshape an array in Python using the reshape()
method.
The number of elements in each dimension determines the shape of an array. You can add or remove array dimensions using reshaping.
In the following code, you can see the dimensions of the numpy array before and after using the reshape()
method.
Example code:
#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))
Output:
#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.
LinkedInRelated Article  Python Error
 Can Only Concatenate List (Not Int) to List in Python
 Invalid Syntax in Python
 Value Error Need More Than One Value to Unpack in Python
 ValueError Arrays Must All Be the Same Length in Python
 Fix the TypeError: Object of Type 'Int64' Is Not JSON Serializable
 Fix the TypeError: 'float' Object Cannot Be Interpreted as an Integer in Python