簡體   English   中英

numpy中的多維數組乘法

[英]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)

ab具有形狀(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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM