2
我需要計算N行的點積;假設對於每一行我需要計算1xM倍MxM乘以Mx1。如果我只查看一行,我會從這個計算中得到1x1。然而,我有N行,所以我想我會堆疊行,並將其饋送到點積;但是,我得到了NxN矩陣。我需要的結果是對角線,但是有沒有更快的方法來做這種計算,這也不會浪費空間?理想情況下,我想最終得到一個Nx1向量,而不是NxN矩陣。有效計算1xM次MxM次Mx1,N次
例
單列
r = np.array([[1,2]]).T
R = np.array([[2,2],[2,2]])
給
[[18]]
多行
rs = np.array([[1,2],[4,4]]).T
R = np.array([[2,2],[2,2]])
print np.dot(np.dot(rs.T,R), rs)
[[ 18 48]
[ 48 128]]
在我的機器,我的三個參數einsum實際上比使用大型陣列的方法要慢十倍。 (diag7.4ms,einsum + dot = 3.6,3-einsum = 73.2)。太糟糕了,我喜歡它。: -/ – DSM
@DSM是的,我也喜歡它,做'einsum'裏面的一切都是我認爲的好工作!可能會刪除它,人們可能會喜歡其他選擇? :) – Divakar