求和数组中每个元素的元素

时间:2016-05-26 19:08:21

标签: python arrays

我有一个数组

[array([  2.46000000e-02,   4.28211000e+01,   7.95400000e+00]), array([  0.0987,  15.1704,   7.5235]), array([ 0.2502,  7.5852,  0.041 ])]

我找到了数组行中项目的总和 对于acb中的项目,上面的数组:

for item in acb:
   print    sum(item) 



50.7997
22.7926
7.8764

我想生成一个数字超过50.799,22.79,7.87

的数组

由于

3 个答案:

答案 0 :(得分:2)

如果您没有将数组作为多维numpy数组,则可以使用np.sum()来获取第二轴上项目的总和:

>>> A = [np.array([  2.46000000e-02,   4.28211000e+01,   7.95400000e+00]), np.array([  0.0987,  15.1704,   7.5235]), np.array([ 0.2502,  7.5852,  0.041 ])]
>>> A = np.array(A)
>>> 
>>> np.sum(A, axis=1)
array([ 50.7997,  22.7926,   7.8764])

请注意,如果您处理大型数据集,这将更有效,否则您只需使用map()函数来获取列表中所有数组的总和(在python3中为迭代器)。

答案 1 :(得分:1)

您可以将该循环转换为列表理解:

>>> [sum(item) for item in acb]
[50.799700000000001, 22.7926, 7.8764000000000003]

如果您需要numpy.array,请相应地转换结果...

>>> np.array(_)
array([ 50.7997,  22.7926,   7.8764])

...或使用np.sum axis参数:

>>> np.sum(acb, axis=1)
array([ 50.7997,  22.7926,   7.8764])

答案 2 :(得分:0)

你可以这样做:

np.array([sum(i) for i in acb])

试验:

In [71]: np.array([sum(i) for i in acb])
Out[71]: array([ 50.7997,  22.7926,   7.8764])

或者已经提到过:

In [72]: np.sum(acb, axis=1)
Out[72]: array([ 50.7997,  22.7926,   7.8764])

这很可能会更快