我有一個長度爲m的n個向量的數組。例如,對於n = 3的,米= 2:在numpy中創建外部產品的數組
x = array([[1, 2], [3, 4], [5,6]])
我想利用與本身的每個矢量的外積,然後將它們連接成正方形矩陣形狀的陣列(正,m,m)。因此,對於上述x
我會得到
array([[[ 1, 2],
[ 2, 4]],
[[ 9, 12],
[12, 16]],
[[25, 30],
[30, 36]]])
我可以用for
圈像這樣
np.concatenate([np.outer(v, v) for v in x]).reshape(3, 2, 2)
是否有一個numpy的表達,這是否不Python的for
循環做到這一點?
紅利問題:由於外部產品是對稱的,因此我不需要使用乘法運算來計算它們。我可以從numpy獲得這種對稱性優化嗎?
通常我會把'...'向左:'np.einsum(」 ...我,...,J - > ... IJ」,X,X)' – seberg