总结2D数组列表中的所有元素

时间:2014-01-22 15:31:55

标签: python arrays numpy

我有n个2d数组的列表QS。现在我想总结列表中的所有数组,以便最终得到另一个2d数组。到目前为止,我手动执行此操作,因为我的列表元素数量很少,例如:

n=6    
QM=QS[0]+QS[1]+QS[2]+QS[3]+QS[4]+QS[5]

但现在我需要考虑列表中的更多元素,我正在寻找一种更加pythonic的方式来做到这一点。我尝试了以下内容:

QQ=map(sum, zip(QS))

但它给出了原始列表中数组元素总和的列表,而不是数组本身的总和。 必须有一个简单的方法来做到这一点,我还没有想出来。有什么建议吗?

4 个答案:

答案 0 :(得分:1)

这相当于将+列在其中:

QM = []
map(lambda l: QM.extend(l), QS)

没有地图:

for l in QS:
    QM.extend(l)

或简单地说:

for l in QS:
    QM += l

答案 1 :(得分:1)

我认为你可以使用np.sum,IIUC:

>>> import numpy as np
>>> QS = [np.random.randint(0, 10, (3,3)) for i in range(6)]
>>> QM = QS[0]+QS[1]+QS[2]+QS[3]+QS[4]+QS[5]
>>> QM
array([[36, 32, 32],
       [34, 28, 30],
       [28, 28, 32]])
>>> QM2 = np.sum(QS,axis=0)
>>> QM2
array([[36, 32, 32],
       [34, 28, 30],
       [28, 28, 32]])
>>> np.allclose(QM, QM2)
True

答案 2 :(得分:0)

没有你的阵列,很难看出究竟会有什么用。但尝试这样的东西来总结一个数组数组(列表列表):

sum([sum(i) for i in zip(*QS)])

Related

答案 3 :(得分:0)

如果您想将2D列表转换为1D,请尝试以下操作:

>>> a = [[1,2], [3,4], [5,6]]
>>> sum(a, [])
[1, 2, 3, 4, 5, 6]
>>>