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

如何将多个同形状无重叠值的numpy数组合并为单个数组?

合并无重叠有效值的Numpy数组

嘿,针对你说的这种「每个位置只有一个数组有非0有效值、其余都是0」的情况,合并起来其实特别省心,不用复杂的判断逻辑,直接求和就搞定了!

核心思路

因为每个位置上只有一个数组存在有效值(非0),其他数组在该位置都是0,所以把所有数组加起来之后,每个位置的结果自然就是那个唯一的有效值——完美契合你的需求。

示例代码

1. 直接合并多个独立数组

import numpy as np

# 准备几个形状相同、无重叠有效值的示例数组
arr1 = np.array([[1, 0, 0], [0, 0, 0]])
arr2 = np.array([[0, 2, 0], [0, 0, 3]])
arr3 = np.array([[0, 0, 4], [5, 0, 0]])

# 直接求和合并
merged_arr = arr1 + arr2 + arr3
print(merged_arr)
# 输出:
# [[1 2 4]
#  [5 0 3]]

2. 处理字典中的数组

如果你的数组是以「元组为键、数组为值」存储在字典里,只需要把所有值提取出来再求和就行:

# 示例字典
arr_dict = {
    (0, 0): np.array([[1, 0, 0], [0, 0, 0]]),
    (0, 1): np.array([[0, 2, 0], [0, 0, 3]]),
    (1, 0): np.array([[0, 0, 4], [5, 0, 0]])
}

# 方法1:用Python内置sum函数
merged_arr = sum(arr_dict.values())

# 方法2:用numpy的sum函数(数组数量多的时候更高效)
merged_arr = np.sum(list(arr_dict.values()), axis=0)

print(merged_arr)
# 输出和上面一致

注意事项

  • 如果你的有效值包含负数,不要用np.max(因为0会比负数大,导致结果错误),求和是最稳妥的方案。
  • 如果数组的数据类型不一致,可以在求和前统一类型,比如:
    arr_list = list(arr_dict.values())
    merged_arr = np.sum(np.array(arr_list, dtype=np.float64), axis=0)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:56:42