Numpy 如何在特定轴上做np.dot

Numpy 如何在特定轴上做np.dot,numpy,Numpy,如果我有两个数组a#25x25x3x5和b#25x25x5x3,我如何通过输出25x25x3x3得到a和b的点积?你想要的不是点积而是矩阵乘法。 对于形状为(A,B)和(B,C)的两个矩阵,其定义如下: (A,B)*(B,C)=(A,C) 这对应于最后两个维度和所需的输出(3,5)*(5,3)=(3,3) 您可以这样使用: import numpy as np a = np.random.uniform(0,1,size=(25,25,3,5)) b = np.random.uniform(0

如果我有两个数组
a#25x25x3x5
b#25x25x5x3
,我如何通过输出
25x25x3x3
得到
a
b
的点积?

你想要的不是点积而是矩阵乘法。 对于形状为(A,B)和(B,C)的两个矩阵,其定义如下:

(A,B)*(B,C)=(A,C)

这对应于最后两个维度和所需的输出(3,5)*(5,3)=(3,3)

您可以这样使用:

import numpy as np

a = np.random.uniform(0,1,size=(25,25,3,5))
b = np.random.uniform(0,1,size=(25,25,5,3))

x = np.matmul(a,b)

print(x.shape) # (25, 25, 3, 3)

a@b
应该这样做。有关更多详细信息,请阅读
np.matmul
文档。基本上,5是
a
的最后一个轴,是
b
的倒数第二个轴,这就是它所期望的。哦,谢谢!所以在2d数组中运行的np.dot相当于np.matmul,对吗?@QiminChen是的,没错。对于更多尺寸,两个轴都在最后两个轴上工作。对于其他轴上的点,还有
np.tensordot