我正在嘗試將列添加到numpy數組中。每行目前有四個值,我希望每行有五個值。下面是一個可重複的例子,返回ValueError: all the input arrays must have same number of dimensions
我不明白爲什麼我會得到錯誤,因爲Y
的長度與X
的長度相同,就像b
的長度與documentation中的a
長度一樣。最終,我希望以最有效的方式將像Y這樣的數組添加到像X這樣的現有數組中作爲每行的新列。將新列/數組添加到Numpy數組中
import numpy as np
from sklearn import datasets
#Documentation
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6]])
c = np.concatenate((a, b.T), axis=1)
print(c)
#My Case
iris = datasets.load_iris()
X = iris.data
Y = iris.target
Z = np.concatenate((X, Y.T), axis = 1) #Is transpose necessary for single dimension array? Throws error either way
print(Z)
編輯:我要補充一點,在實踐中我將與從sklearn
預測從模型的擬合值來工作。所以我特別感興趣的是將預測值添加到現有數組(如X)的最有效方法,即sklearn使用的格式。下面的解決方案來自M4rtini的評論,我認爲這相當於Dietrich的解決方案之一。這是最快的實施?
#My Case
import numpy as np
from sklearn import datasets
from sklearn.linear_model import LinearRegression
iris = datasets.load_iris()
X = iris.data
Y = iris.target
model = LinearRegression()
model.fit(X,Y)
y_hat = model.predict(X).reshape(-1,1)
Z = np.concatenate((X, y_hat), axis = 1)
嘗試'Y.reshape(-1,1)'而不是'Y.T'。如果沒有第二維轉置它不會做任何事情。 – M4rtini