解决Python报错Valueerror: Expected 2d Array Got 1d Array Instead
作者:迹忆客
如您所知,每种编程语言都会遇到很多错误,有些是在运行时,有些是在编译时。 Python 在使用 numpy 库时有时会遇到数组错误。
当我们在 numpy 中传递一维数组而不是二维数组时,会发生错误 ValueError: Expected 2D array, got 1D array instead 。
Python 中的 Numpy 数组
Numpy 是一个处理数组和数学运算的开源库。 在 Python 中,列表向我们提供了数组的用途,但 numpy 的创建者声称他们证明数组比列表快 50 倍。
这是使用 numpy 数组的核心目的之一。
在 Python 中创建一个 Numpy 数组
numpy 数组的语法很简单。 我们必须将 numpy 库导入您的程序并相应地使用。
import numpy as np # creating a numpy array array1 = np.array([2,4,6]) print(array1)
输出:
[2 4 6]
Python 中错误 ValueError: Expected 2D array, got 1D array instead 的原因
当您在函数中传递一维数组时会发生此错误。 但是,该函数需要一个二维数组,因此您传递的不是一个二维数组,而是一个单一维度的数组。
它主要发生在 predict() 方法中使用机器学习算法。
现在让我们来看看这个场景。
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]))
输出:
修复 Python 中错误 ValueError: Expected 2D array, got 1D array instead
对数据使用双方括号
下面我们已经解决了前面例子中的错误。 修复错误的最简单方法是将维数组转换为二维数组。
我们可以将 [0.7,1.10] 括在另一个方括号中,以便在将其传递给 predict() 方法时将其转换为二维数组。
示例代码:
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]]))
输出:
[1]
使用 reshape() 重塑数组
将一维数组转换为二维数组的另一种方法是使用 reshape() 方法重塑数组。 您可以使用 reshape() 方法在 Python 中重塑数组。
每个维度中元素的数量决定了数组的形状。 您可以使用重塑来添加或删除数组维度。
在下面的代码中,您可以看到使用 reshape() 方法前后 numpy 数组的维度。
示例代码:
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))
输出:
Dimension before: 1
Dimension now: 2
Classifier Result: [1]
到此这篇关于解决Python报错Valueerror: Expected 2d Array Got 1d Array Instead的文章就介绍到这了,更多相关Python报错Valueerror内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!