高效计算数组最后一维的点积
Efficiently compute the dot product on the last dimension of an array
在多维 ndarray 的最后一个维度上计算点积的最快方法是什么?
目前我正在这样做:
import numpy as np
a=np.reshape(np.arange(90),[3,3,2,5])
b=np.reshape(np.arange(90),[3,3,2,5])
# for the sake of simplicity, a and b are the same for this example
ab=(a*b).sum(axis=-1)
我认为 einsum
在这里可能有用,但我很难将其应用到我的案例中。
谢谢!
对于通用 ndim 数组,沿最后一个轴获得总和减少 -
np.einsum('...i,...i->...',a,b)
替代 np.matmul
-
np.matmul(a[...,None,:],b[...,None])[...,0,0]
注意:在 Python 3.x np.matmul
可以替换为 @ operator
。
在多维 ndarray 的最后一个维度上计算点积的最快方法是什么?
目前我正在这样做:
import numpy as np
a=np.reshape(np.arange(90),[3,3,2,5])
b=np.reshape(np.arange(90),[3,3,2,5])
# for the sake of simplicity, a and b are the same for this example
ab=(a*b).sum(axis=-1)
我认为 einsum
在这里可能有用,但我很难将其应用到我的案例中。
谢谢!
对于通用 ndim 数组,沿最后一个轴获得总和减少 -
np.einsum('...i,...i->...',a,b)
替代 np.matmul
-
np.matmul(a[...,None,:],b[...,None])[...,0,0]
注意:在 Python 3.x np.matmul
可以替换为 @ operator
。