使用 numpy 1d 数组作为 sklearn X 的最短语法

问题描述 投票:0回答:2

我经常有两个

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
接受一维数组)?

python numpy scikit-learn
2个回答
10
投票

您可以对数组进行切片,创建一个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

0
投票

或者,可以使用:

x = np.array([...]).reshape(-1, 1)
© www.soinside.com 2019 - 2024. All rights reserved.