假设我有一个像这样的 numpy 矩阵:
[[ 1 2 3]
[ 10 100 1000]]
我想计算每列与自身的内积,所以结果是:
[1*1 + 10*10 2*2 + 100*100 3*3 + 1000*1000] == [101, 10004, 1000009]
我想知道这是否可以使用该einsum
功能(并更好地理解它)。
到目前为止,我能得到的最接近的结果是:
import numpy as np
arr = np.array([[1, 2, 3], [10, 100, 1000]])
res = np.einsum('ij,ik->jk', arr, arr)
# [[ 101 1002 10003]
# [ 1002 10004 100006]
# [ 10003 100006 1000009]]
对角线包含预期结果,但我想知道是否可以避免边缘计算。