[英]High-dimensional array multiplication
考慮以下代碼。
import numpy as np
array1 = np.random.random((3,3,3))
array2 = np.random.random((3,3,3))
array3 = array1@array2
array3
包含什么? 我知道它也有形狀(3,3,3)
。 如果array1
和array2
是二維的,那么array3
就是arrays的矩陣乘法。 @
操作有數學意義嗎?
這在PEP 465中有解釋:
對於超過 2 維的輸入,我們將最后兩個維度視為要相乘的矩陣維度,並“廣播”到其他維度。 這提供了一種在單個操作中快速計算許多矩陣乘積的便捷方法。 例如,
arr(10, 2, 3) @ arr(10, 3, 4)
執行 10 個單獨的矩陣乘法,每個乘法將 2x3 和 3x4 矩陣相乘產生 2x4 矩陣,然后將 10 個結果矩陣一起返回在形狀為 (10, 2, 4) 的數組中。
因此,對於您的代碼array3[0, :, :]
包含矩陣矩陣乘法array1[0, :, :] @ array2[0, :, :]
等的結果。
在numpy @
做矩陣乘法
而*
進行元素明智的乘法或Hadamard 乘積
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.