我有一个数组
[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 :(得分: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])
这很可能会更快