3

我有两个 numpy 数组,一个形状为 (3000,),另一个是 20 个 3000 x 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 个值。如何使用广播来做到这一点?

4

1 回答 1

2

dotprod2 = np.dot( first, dotprod1)失败,因为firstis of shape(3000, )dotprod1is of shape (20, 3000),交换它们,错误就会消失(如果这是你的意图):

dotprod2 = np.dot(dotprod1, first)

此外,您还可以使用np.ndarray.dot使语义清晰:

dotprod2 = dotprod1.dot(first)
于 2015-07-01T16:30:24.683 回答