2017-10-12 35 views
0

我試圖連接兩個numpy的陣列中添加一個額外的列:array_1(569, 30)array_2的是(569,)的毗連兩個不同維度的數組numpy的

combined = np.concatenate((array_1, array_2), axis=1)

我認爲這會工作,如果我設置axis=2所以它會垂直連接。最後應該是一個569 x 31陣列。

我得到的錯誤是ValueError: all the input arrays must have same number of dimensions

有人能幫忙嗎?

Thx!

+0

關閉,但僅具有兩個軸(軸0 = 569和軸1 = 30),嘗試'軸= 1'。 – umutto

+0

嗨 - 這是一個錯字..我剛剛更新了我的問題與我的陣列的形狀和錯誤,我回來 –

+0

啊你的'array_2'只有一個維度,需要與'array_1'具有相同數量的維度。你可以重新調整它'array_2.reshape(-1,1)',或者添加一個新軸'array_2 [:,np.newaxis]'使它在連接之前變成二維。 – umutto

回答

1

可以使用numpy.column_stack

np.column_stack((array_1, array_2)) 

,1-d陣列轉換2-D隱式,並因此等價於np.concatenate((array_1, array_2[:,None]), axis=1)作爲評論由@umutto。


a = np.arange(6).reshape(2,3) 
b = np.arange(2) 

a 
#array([[0, 1, 2], 
#  [3, 4, 5]]) 

b 
#array([0, 1]) 

np.column_stack((a, b)) 
#array([[0, 1, 2, 0], 
#  [3, 4, 5, 1]]) 
+1

完美,謝謝! –

+1

它使用'array(arr,copy = False,subok = True,ndmin = 2).T'來將1d數組轉換爲2.我更喜歡你的'[:,None]'。 :) – hpaulj