2016-05-26 64 views
1

我有一个数组萨姆阵列

[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

由于

+0

你知道如何计算单个数组的总和?只要做一个循环或一个数组理解。 – Barmar

+0

'sum(itertools.chain(list_of_arrays))' –

+0

谢谢我只想得到一个数组返回somearray [50.79等] – Cliff

回答

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

你可以只是转换该循环到一个列表理解:

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

如果你想有一个numpy.array,无论结果相应转换...

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

...或使用np.sumaxis参数:

>>> np.sum(acb, axis=1) 
array([ 50.7997, 22.7926, 7.8764]) 
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]) 

这将最有可能更快