2017-06-18 95 views
0

我有具有len(X)等於13934和len(X[i])的矩陣X,對於所有的i,等於74和我有一個數組Y,它具有len(Y)等於13934和len(Y[i])等於TypeError: object of type 'numpy.int64' has no len()對於所有的i 。Python的垂直堆疊不工作

當我嘗試np.vstack((X,Y))result = np.concatenate((X, Y.T), axis=1)

我得到ValueError: all the input array dimensions except for the concatenation axis must match exactly

問題是什麼?當我打印出它說數組([1,...],dtype = int64),當我打印出X它說數組([數據..])沒有dtype。這可能是問題嗎?

我試圖通過做X.view('float32')將它們都轉換爲float32,這沒有幫助。

回答

1

由於X是numpy的數組,你可以做X.shape而不是重複len。我期望它顯示(13934,74)。

我預計Y.shape是(13934,)。這是一個1d陣列,這就是爲什麼Y[0]是一個數字,numpy.int64。由於它是1d,轉置(交換軸)不起作用。 (這不是MATLAB,其中至少有2個維度。)

它看起來像你想創建一個具有形狀(13934,75)的數組。爲此,您需要將尺寸添加到YY[:,None]是一個簡潔的方法。它的形狀是(13934,1),它將與X連接。如果None的語法令人費解,請嘗試使用Y.reshape(-1,1)(或reshape(13934,1))。

1

你可以試試這個:

# use Y[:,None] to make Y 2d array so it can be concatenated with X which is also 2d 
np.concatenate((X, Y[:,None]), axis=1) 

或者:

np.hstack((X,Y[:,None]))