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

如何计算两个二维numpy数组对应索引子数组的点积?

嗨,完全不用不好意思呀,新手刚开始接触numpy有疑问太正常了!我来给你分享几种高效实现这个需求的方法:

方法一:元素相乘后按轴求和

这是最直观也最常用的方式,利用numpy的向量化操作,先让两个数组对应位置的元素相乘,再沿着子数组的维度(也就是axis=1)求和,就能得到每个索引位置子数组的点积:

import numpy as np

a = np.array([[1, 2], [3, 4], [5, 6]])
b = np.array([[2, 2], [3, 3], [4, 4]])

result = (a * b).sum(axis=1)
print(result)  # 输出:[ 6 21 44]

方法二:使用np.einsum

如果你想更灵活地控制维度运算,np.einsum是个很棒的工具,它的语法可以清晰指定运算规则:

result = np.einsum('ij,ij->i', a, b)
print(result)  # 输出:[ 6 21 44]

这里'ij,ij->i'的意思是:对两个数组的第i个元素组(每个子数组),计算它们j维度上的元素乘积之和,最终输出一维数组。

小提醒:优先用向量化操作

虽然用Python循环遍历每个子数组计算点积也能实现,但numpy的向量化操作是基于C实现的,当n很大的时候,效率会比循环高很多,所以优先用上面的方法哦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:23:13