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

如何用NumPy计算两个二维数组的逐元素点积?

对应行点积的NumPy简便实现

你需要的是计算两个二维数组对应行的点积,以下几种NumPy方法都能通过一次调用实现需求:

  • 方法一:元素乘法 + 行求和
import numpy as np

a = np.array([[0, 1], [1, 1], [1, 0]])
b = np.array([[1, 0], [1, 1], [1, -1]])
dot = np.sum(a * b, axis=1)
print(dot)  # 输出: [0 2 1]

a * b完成逐元素乘法,np.sum(..., axis=1)沿每行维度求和,直接得到对应行的点积结果。

  • 方法二:使用爱因斯坦求和np.einsum
dot = np.einsum('ij,ij->i', a, b)

参数'ij,ij->i'指定运算规则:两个二维数组的对应位置元素相乘后,对列维度(j)求和,最终保留行维度(i)的结果。

  • 方法三:np.inner结合对角线提取(不推荐)
    若要使用你尝试过的np.inner,可通过提取对角线得到结果:
dot = np.inner(a, b).diagonal()

np.inner(a, b)会生成一个3×3矩阵,其中每个元素是a某一行与b某一行的点积,对角线元素即为对应行的点积。但此方法步骤冗余,效率不如前两种。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 06:51:02