2016-03-05 48 views
2

我經常有兩個numpy 1d陣列,xy,並且想要使用它們執行一些快速sklearn擬合+預測。現在最短語法使用numpy 1d數組作爲sklearn X

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)... 

的問題是,它expects an X which is a 2d column array。出於這個原因,我通常給它

x.reshape((len(x), 1)) 

我覺得這很麻煩,難以閱讀。

是否有一種更簡單的方法將1d數組轉換爲2d列數組(或者,也可以使用sklearn接受1d數組)?

回答

4

可以切成你的陣列,創建一個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

感謝。這是一個很好的答案。 –