我有两个numpy数组,一个形状(3000,),另一个是二十个3000乘3000矩阵的数组,即形状(20,3000,3000)
first.shape = (3000,)
second.shape = (20, 3000, 3000)
我正在做一个numpy dot产品。
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个值。如何使用广播来做到这一点?
答案 0 :(得分:1)
dotprod2 = np.dot( first, dotprod1)
失败,因为first
形状(3000, )
而dotprod1
形状(20, 3000)
,交换它们并且错误将会消失(如果这是你的意图) ):
dotprod2 = np.dot(dotprod1, first)
此外,您还可以使用np.ndarray.dot
使语义清晰:
dotprod2 = dotprod1.dot(first)