python - np.dot() 与 Python 广播

标签 python numpy matrix array-broadcasting

我有两个 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/

相关文章:

javascript - HTML5 Canvas : Draw matrix with fixed first row and first column

r - R中一类分类变量的相关矩阵

python - 将字节字符串转换为 matplotlib 可读时间

python - 通知作为 cron 作业

Python 网络 x : grouping nodes based on a node attribute

python - 在 Python 中按索引对矩阵元素求和

python - 自动检测/转换数据类型?

python - 将表情符号添加到 AFINN 库以进行情感分析

python - 将六位数字列拆分为一位数的分隔列

matlab - 用于按组快速求和的矩阵索引