我有两个 numpy 数组,一个形状为 (3000,),另一个是 20 个 3000 x 3000 矩阵的数组,即形状 (20, 3000, 3000)
first.shape = (3000,)
second.shape = (20, 3000, 3000)
我正在做一个 numpy 点积。
import numpy as np
dotprod1 = np.dot( second, first)
这有效,输出 dotprod1
是一个形状为 (20, 3000) 的数组。
但是如果我想再次进行点积怎么办?
dotprod2 = np.dot( first, dotprod1)
这给出了一个错误。
ValueError: shapes (3000,) and (20,3000) not aligned: 3000 (dim 0) != 20 (dim 0)
我想要输出 20 个值。如何使用广播来做到这一点?
最佳答案
dotprod2 = np.dot( first, dotprod1)
失败,因为 first
的形状是 (3000, )
和 dotprod1
的形状是 (20, 3000)
,交换它们,错误就会消失(如果这是你的意图):
dotprod2 = np.dot(dotprod1, first)
此外,您还可以使用np.ndarray.dot
来使语义清晰:
dotprod2 = dotprod1.dot(first)
关于python - np.dot() 与 Python 广播,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31166784/