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

Python 对嵌套列表中各numpy array元素分别求和输出结果列表

需求说明

现有嵌套列表distances,内部元素均为numpy数组,需要对每个数组内部元素分别求和,最终返回由各数组求和值组成的一维列表。
给定的distances结构如下:

distances
[array([2.0786226e-03, 3.9023757e-03, 3.4480095e-03, 5.1999092e-04], dtype=float32), array([0.0031136 , 0.00344056, 0.00739563, 0.0311079 ],
      dtype=float32), array([1.8880665e-03, 3.0295253e-03, 4.0802956e-03, 2.6324868e-02], dtype=float32), array([0.00330418, 0.00431347, 0.00802791, 0.00426304],
      dtype=float32)]

期望输出:

[0.00994899872, 0.04505769, 0.0353227554, 0.0199086]
原有代码问题分析

你编写的代码print(sum( sum(x) if isinstance(x, list) else x for x in L ))存在两个问题:

  • 外层的sum直接包裹了遍历生成器,会把每个元素的计算结果再次累加,最终只能得到单个总加和的标量
  • 类型判断逻辑错误:distances的内部元素是numpy数组而非普通列表,所有元素都会走else分支直接返回数组本身,外层sum会把所有数组的全部元素加总,完全不符合需求。
正确实现方案

方法1:纯numpy数组场景

如果确认distances里所有元素都是numpy数组,直接用列表推导式调用每个数组的内置sum方法即可,性能最优:

result = [arr.sum() for arr in distances]
print(result)

方法2:兼容普通列表和numpy数组混合场景

如果列表里可能同时存在普通列表和numpy数组,调整类型判断逻辑即可:

import numpy as np
result = [x.sum() if isinstance(x, np.ndarray) else sum(x) for x in distances]
print(result)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 17:03:03