在嵌套列表中添加元素并输出列表

f8rj6qna  于 2021-08-20  发布在  Java
关注(0)|答案(4)|浏览(329)

我想添加

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 ))
sg24os4d

sg24os4d1#

假设 Ldistances ,你就快到了:

print([sum(x) if isinstance(x, list) else x for x in L ])
eqoofvh9

eqoofvh92#

你可以用 numpy 这样做,就像

import numpy as np

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

print(np.sum(distances,axis=1))

它给出了所需的输出

elcex8rz

elcex8rz3#

在我们继续之前,我想说的是,您应该指定它与numpy一起使用。
为什么只做一行?使用一个简单的for循环。在每个列表中取第一项,分别相加。要存储它,请将其附加到列表中,然后转到第二项。找到工作代码后,只需尝试缩短它。这是一个很好的python实践。

wr98u20j

wr98u20j4#

由于列表中已有numpy对象,因此可以对这些对象求和。
numpy对象数组具有元素级实现,因此可以求和:

a = np.array([a1, a2, a3])
b = np.array([b1, b2, b3])
a + b

a+b的结果将是:

[a1+b1, a2+b2, a3+b3]

正如@bruno提到的,您可以使用内置方法 numpy.sum 自动执行此操作。

相关问题