为什么 .T 会修复二维数组中的点积错误?

Why does .T fix my dot product error in two dimensional arrays?

我有两个这样的二维数组:

arr1 = np.random.randn(4, 3)
arr2 = np.random.randn(4, 3)

当我试图找到它们之间的点积时,出现错误:

np.dot(arr1, arr2)
Error: ValueError: shapes (4,3) and (4,3) not aligned: 3 (dim 1) != 4 (dim 0)

经过一些研究,我发现通过将 .T 添加到它起作用的数组之一:

np.dot(arr1.T, arr2)

但我的问题是为什么添加 .T 会起作用,T 代表什么,它究竟有什么作用?

要理解这一点,您需要了解矩阵乘法的工作原理。

要对任意两个维度为R1xC1 和R2xC2 的矩阵进行点积,需要C1==R2。输出矩阵的形状为 R1xC2。因此,当您调用 .T 或转置而不是 (4,3) 和 (4,3) 时,点出现在 (3,4) 和 (4,3) 之间,为您提供形状 (3,3) 的输出.

我认为您可能将点积与元素积混淆了,在元素积中您可以与相同形状的矩阵相乘并获得相同形状的输出。为此,arr1*arr2 就足够了。