2017-05-09 85 views
0

我有一列數組包含相同的行,但不同的列。 我打印出數組的形狀並檢查它們是否有相同的行。Numpy連接爲相同的行但列不同的數組

print ("Type x_test : actual",type(x_dump),x_dump.shape, type(actual), actual.shape, pred.shape) 
cmp = np.concatenate([x_test,actual,pred],axis = 1) 

('Type x_test : actual', <type 'numpy.ndarray'>, (2420L, 4719L), <type 'numpy.ndarray'>, (2420L,), (2420L,)) 

這給了我一個錯誤:

ValueError: all the input arrays must have same number of dimensions 

我試圖複製使用下面的命令,這個錯誤:

x.shape,x1.shape,x2.shape 
Out[772]: ((3L, 1L), (3L, 4L), (3L, 1L)) 

np.concatenate([x,x1,x2],axis=1) 
Out[764]: 
array([[ 0, 0, 1, 2, 3, 0], 
     [ 1, 4, 5, 6, 7, 1], 
     [ 2, 8, 9, 10, 11, 2]]) 

我沒有在這裏得到任何錯誤。有沒有人面臨類似的問題?

編輯1:在寫完這個問題後,我發現尺寸是不同的。 @Gareth Rees:精美地解釋了numpy數組(R,1)和(R,)here之間的差別。

上的使用:

# Reshape and concatenate 
actual = actual.reshape(len(actual),1) 
pred = pred.reshape(len(pred),1) 

編輯2:標記關閉這個答案的Difference between numpy.array shape (R, 1) and (R,)重複。

+0

這是什麼問題?結果似乎是正確的。你能更準確地知道你想要做什麼嗎? – fonfonx

+0

@fonfonx我的第一個命令是給出錯誤。形狀也是(2420L,)而不是(2420L,1L)。即使我使用x_dump.reshape(2420,1)它不起作用。爲什麼col值在x_dump.shape中爲空 – Tammy

+1

「形狀也是(2420L,)而不是(2420L,1L)」 - 這是你的問題。你需要重塑形狀爲'(2420L,)'的物體以具有形狀'(2420L,1)'。 – Eric

回答

-2

編輯

發佈後,OP發現錯誤。除非需要看到帶有(R,1)和(R,)形狀的結構,否則這可以被忽略。無論如何,這將會給選民的練習空間。

ORIGINAL

鑑於你的形狀,答案是正確的。

a = np.arange(3).reshape(3,1) 

b = np.arange(12).reshape(3,4) 

c = np.arange(3).reshape(3,1) 

np.concatenate([a, b, c], axis=1) 
Out[4]: 
array([[ 0, 0, 1, 2, 3, 0], 
     [ 1, 4, 5, 6, 7, 1], 
     [ 2, 8, 9, 10, 11, 2]]) 

a 
Out[5]: 
array([[0], 
     [1], 
     [2]]) 

b 
Out[6]: 
array([[ 0, 1, 2, 3], 
     [ 4, 5, 6, 7], 
     [ 8, 9, 10, 11]]) 

c 
Out[7]: 
array([[0], 
     [1], 
     [2]]) 
相關問題