转:sklearn的Expected 2D array, got 1D array instead: 和reshape函数
报错内容如下(忽略array数据):
-
ValueError: Expected 2D array, got 1D array instead:
-
array=[ 4742.92 3398. 2491.9 2149. 2070. ].
-
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.
这是在git上面看到的一个国际友人的解答。
原文,如下:
I think you're using a new scikit-learn version and it's throwing an
error because in the new version everything has to be a 2d matrix, even a
single column or row.
(新版本中所有东西都必须是一个2D矩阵,即使是一个简单的column或row)
It even says: 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.
(使用array.reshape(-1, 1)重新调整你的数据)
原错误代码:
data['标准化累计票房'] = scaler.fit_transform(data['累计票房'])
修改后:
data['标准化累计票房'] = scaler.fit_transform(data['累计票房'].reshape(-1,1))
如果是python3这里可能会出现警告:FutureWarning。因为reshape方法在后续会取消,所以改用values.reshape(-1,1)
data['标准化累计票房'] = scaler.fit_transform(data['累计票房'].values.reshape(-1,1))
关于reshape函数:
numpy中一个调整矩阵行数、列数、维度数的一个函数。
知乎用户cuicuicui实例:
c = np.array([[1,2,3],[4,5,6]])
输出:
[[1 2 3]
[4 5 6]]
我们看看不同的reshape
-
print '改成2行3列:'
-
print c.reshape(2,3)
-
print '改成3行2列:'
-
print c.reshape(3,2)
-
print '我也不知道几行,反正是1列:'
-
print c.reshape(-1,1)
-
print '我也不知道几列,反正是1行:'
-
print c.reshape(1,-1)
-
print '不分行列,改成1串'
-
print c.reshape(-1)
输出为:
改成2行3列:
[[1 2 3]
[4 5 6]]
改成3行2列:
[[1 2]
[3 4]
[5 6]]
我也不知道几行,反正是1列:
[[1]
[2]
[3]
[4]
[5]
[6]]
我也不知道几列,反正是1行:
[[1 2 3 4 5 6]]
不分行列,改成1串
[1 2 3 4 5 6]
作者:cuicuicui
链接:https://www.zhihu.com/question/52684594/answer/297441394
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。