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

如何将小numpy数组的行稀疏添加到大numpy数组的指定行?

解决方法:利用Numpy高级索引实现批量行加法

这事儿根本用不着np.apply_along_axis,Numpy本身的索引机制就能完美解决,而且效率高得多。

核心实现代码

只需要几行就能完成需求:

import numpy as np

# 定义示例数组
A = np.array([[0, 0, 0, 0],
              [0, 0, 0, 0],
              [0, 0, 0, 0],
              [0, 0, 0, 0],
              [0, 0, 0, 0],
              [0, 0, 0, 0],
              [0, 0, 0, 0]])
B = np.array([[1, 3, 2, 4],
              [6, 2, 5, 1],
              [2, 8, 1, 4]])
Index = np.array([1, 4, 5])

# 若不想修改原数组A,先复制一份;允许修改的话直接操作A即可
result = A.copy()
result[Index] += B

# 输出结果
print(result)

原理说明

  • Numpy支持用整数数组作为索引,result[Index]会直接取出A中索引为1、4、5的三行,形成一个和B形状完全一致的子数组。
  • 执行+= B时,Numpy会自动将B的每一行和result[Index]对应的行逐元素相加,精准匹配你要的对应关系。

为什么放弃np.apply_along_axis?

  • 这个函数本质是逐行遍历,面对大型数组时,速度比向量化操作慢几个数量级。
  • 你提到的两个痛点:跳过不需要处理的行、匹配B的对应行,用索引方法完全不存在——直接精准定位目标行,和B的行一一对应,根本不需要遍历整个A。

内容的提问来源于stack exchange,提问作者E. V. Hadzen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 02:18:10