2015-02-10 105 views
0

我想將numpy矩陣的列乘以一起。我遵循此question中給出的代碼。將Numpy矩陣的列乘上的麻煩

這裏是列的樣子:

enter image description here

這是當我嘗試乘以矩陣的兩列在一起會發生什麼。

enter image description here

也許問題是,列存儲不同?其他問題中的某些打印輸出沒有存儲在單獨列表中的號碼。

+2

如何定義'new_train_data'?它看起來不像香草二維數組。 – gboffi 2015-02-10 17:20:27

回答

3

With np.matrix, the * operator does matrix multiplication而不是單元乘法,這是我假設你正在嘗試做的。

您得到一個ValueError,因爲兩個列向量未正確對齊矩陣乘法。它們的內部尺寸不匹配,因爲它們的形狀分別爲(N, 1)(N, 1)。它們需要爲(1, N),(N, 1)(對於內部產品)或(N, 1),(1, N)(對於外部產品)以便矩陣乘法工作。

如果你選擇堅持使用np.matrix來保存你的數據,你可以使用np.multiply()功能做逐元素乘法:

result = np.multiply(new_train_data[:, 0], new_train_data[:, 1]) 

不過,我會建議你使用np.array,而不是np.matrix在未來。使用np.array*運算符執行元素方式乘法,並且np.dot()函數(或陣列的.dot()方法)執行矩陣乘法。

-1

那麼在答案中,它使用numpy.dot將n * n與n相乘...適合我!

1

new_train_data顯然是matrixndarray的子類)。它的*被定義爲矩陣乘法(如np.dot),而不是正則numpy數組的逐個元素乘法。因此「對齊」錯誤消息。