You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在NumPy中能否实现矩阵逐行点积运算?

逐行计算两个NumPy数组的点积

当然可行,针对你给出的数组,我们可以通过多种NumPy内置方法实现逐行点积的计算,得到目标输出y = np.array([28, 28, 28, 28])。以下是几种常用方案:

方法1:逐元素相乘后按行求和

这是最直观的方式,先对两个数组逐元素相乘,再沿着行维度(axis=1)求和,结果就是每行的点积:

import numpy as np

X = np.array([[1., 2., 3.],
              [1., 2., 3.],
              [1., 2., 3.],
              [1., 2., 3.]])

B = np.array([[2, 4, 6],
              [2, 4, 6],
              [2, 4, 6],
              [2, 4, 6]])

y = np.sum(X * B, axis=1)
print(y)  # 输出: [28. 28. 28. 28.]

方法2:使用np.einsum指定维度运算

einsum可以灵活定义数组间的维度运算规则,'ij,ij->i'表示对两个数组的第i行第j列元素相乘,最后沿j维度求和得到第i个结果:

y = np.einsum('ij,ij->i', X, B)
print(y)  # 输出: [28. 28. 28. 28.]

方法3:矩阵乘法结合取对角线

将B转置后与X做矩阵乘法,结果矩阵的对角线元素就是每行的点积(此方法适合理解矩阵乘法与点积的关系,但前两种更直接):

y = np.dot(X, B.T).diagonal()
print(y)  # 输出: [28. 28. 28. 28.]

内容的提问来源于stack exchange,提问作者fourloops

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 15:36:20