[英]multidimensional array multiplication in numpy
我有2個多維數組。 我想將這些數組相乘。
我的兩個陣列都有形狀:
shape : (3, 100)
我想轉換matlab代碼:
sum(q1.*q2)
至
np.dot(q1, q2)
給我輸出:
ValueError: objects are not aligned
使用Matrix元素明智產品*
而不是dot
積
以下是尺寸減小的示例運行
履行
A = np.random.randint(5,size=(3,4))
B = np.random.randint(5,size=(3,4))
result = A * B
演示
>>> A
array([[4, 1, 3, 0],
[2, 0, 2, 2],
[0, 1, 1, 1]])
>>> B
array([[1, 3, 0, 2],
[3, 4, 1, 2],
[3, 0, 4, 3]])
>>> A * B
array([[4, 3, 0, 0],
[6, 0, 2, 4],
[0, 0, 4, 3]])
當我被要求時,我安裝了Octave
sum(a .* b)
與a
和b
具有形狀(3, 100)
返回形狀的陣列(1, 100)
numpy中的確切等價物是:
np.sum(a * b, axis=0)
返回一個形狀數組(100,)
,或者如果你想保持大小為1的尺寸:
np.sum(a * b, axis=0, keepdims=True)
使用np.einsum
可以獲得相同的結果,可能更快:
np.einsum('ij,ij->j', a, b)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.