2015-01-31 21 views
0

我有兩個矩陣,一個(mxn)和b(nxp)。對於每個n,我想將a的第n列與b的第n行相乘,給出n(mxp)個矩陣。然後,我想通過取矩陣中每個元素的平均值將這些矩陣「摺疊」成單個(mxp)矩陣。有沒有一種合理有效的方法(如無循環)在numpy中做到這一點?行和列的點積

+1

我不明白你的算法。當然,在第一步中,你所描述的「取點積」就是矩陣乘法? – user3684792 2015-01-31 21:48:56

+0

你能確認輸出應該是什麼樣的,例如使用示例數組'a = np.arange(2 * 3).reshape(2,3)'和'b = np.arange(3 * 4).reshape(3,4)'? – 2015-01-31 21:50:49

+0

你是對的,我更新了我原來的問題。 – shaftoes 2015-01-31 22:00:53

回答

4

點積乘以一個和,產生一個(m,p)數組。如果你想要的是平均值而不是總和,只需除以n,即你正在求和的項目數量。

np.dot(a,b)/n 
+1

是的,在我意識到這比我們需要的複雜得多之前,我已經準備好用'np.einsum('ij,jk-> ijk',a,b).mean(axis = 1)' ... – DSM 2015-01-31 22:05:49