我经常有两个
numpy
一维数组,x
和y
,并且想使用它们执行一些快速的sklearn拟合+预测。
import numpy as np
from sklearn import linear_model
# This is an example for the 1d aspect - it's obtained from something else.
x = np.array([1, 3, 2, ...])
y = np.array([12, 32, 4, ...])
现在我想做类似的事情
linear_model.LinearRegression().fit(x, y)...
问题是它需要一个
X
,它是一个二维列数组。因为这个原因,我通常会喂它
x.reshape((len(x), 1))
我觉得这很麻烦且难以阅读。
是否有一些更短的方法可以将一维数组转换为二维列数组(或者,让
sklearn
接受一维数组)?
您可以对数组进行切片,创建一个newaxis:
x[:, None]
这个:
>>> x = np.arange(5)
>>> x[:, None]
array([[0],
[1],
[2],
[3],
[4]])
相当于:
>>> x.reshape(len(x), 1)
array([[0],
[1],
[2],
[3],
[4]])
如果您发现它更具可读性,您可以使用转置矩阵:
np.matrix(x).T
如果你想要一个数组:
np.matrix(x).T.A
或者,可以使用:
x = np.array([...]).reshape(-1, 1)