我有一个由另一个函数生成的数组列表。

testGroup = [array([18]), array([], dtype=int64), array([56, 75, 55, 55]), array([32])]

我想返回列表中每个数组的总和,空的数组返回为零。

我试着用numpy,按照文档的要求。

np.sum([[0, 1], [0, 5]], axis=1)
array([1, 5])np.sum([[0, 1], [0, 5]], axis=1)
array([1, 5])

但当我尝试np.sum(testGroup, axis=1)时我得到一个轴错误,因为我认为空数组的尺寸小于1?

我也试过直接求和arraySum = sum(testGroup),但得到一个ValueError。

有什么办法可以实现数组内部的和? testGroup列表的总和?

python
arrays
numpy
sum
gsx
gsx
发布于 2021-09-20
3 个回答
Cory Kramer
Cory Kramer
发布于 2021-09-20
已采纳
0 人赞同

testGroup是一个普通的Python列表,刚好包含numpy.array元素。相反,你可以使用一个列表理解器

>>> [np.sum(a) for a in testGroup]
[18, 0, 241, 32]
    
gsx
谢谢你!它成功了
Lukas S
Lukas S
发布于 2021-09-20
0 人赞同
list(map(np.sum, testGroup)) it gives

[18, 0, 241, 32]
    
gsx
谢谢!感谢你抽出时间来帮助我。
Daweo
Daweo
发布于 2021-09-20
0 人赞同

你可以使用所谓的list-comprehension将函数应用于列表中的每个元素,如下所示

import numpy as np
testGroup = [np.array([18]), np.array([], dtype=np.int64), np.array([56, 75, 55, 55]), np.array([32])]
totals = [np.sum(i) for i in testGroup]