在python中添加数组,列表中包含列表

时间:2017-08-09 01:07:42

标签: python arrays numpy

如何总结以下列表?

a=[[1,2,3],[4,5,6],[7,8,9]]
b=[[1,2,3],[4,5,6],[7,8,9]]

我应用此代码:

Total=[x + y for x, y in zip(a, b)]

所以输出将是:

Total=[[1,1,2,2,3,3],[4,4,5,5,6,6],[7,7,8,8,9,9]]

但我希望得到

Total=[[2,4,6],[8,10,12],[14,16,18]]

任何人都可以与我分享一些想法吗?

3 个答案:

答案 0 :(得分:4)

你很近:

>>> [[x+y for x,y in zip(sub1, sub2)] for sub1, sub2 in zip(a,b)]
[[2, 4, 6], [8, 10, 12], [14, 16, 18]]

您只需要意识到需要更深层次地迭代,因为zip(a,b)的返回值是子列表,如果添加子列表,则会得到连接。

答案 1 :(得分:3)

您使用NumPy标记了它,因此我将介绍NumPy方法:

import numpy as np
a=[[1,2,3],[4,5,6],[7,8,9]] 
b=[[1,2,3],[4,5,6],[7,8,9]]

np.array(a) + np.array(b)  # this will do element-wise addition
# array([[ 2,  4,  6],
#        [ 8, 10, 12],
#        [14, 16, 18]])

实际上只将一个转换为NumPy数组 - 但内部NumPy会将另一个转换为NumPy数组。键入的内容更少:

np.array(a) + b
a * np.array(b)

答案 2 :(得分:3)

np.add怎么样?

In [326]: import numpy as np

In [327]: np.add(a, b)
Out[327]: 
array([[ 2,  4,  6],
       [ 8, 10, 12],
       [14, 16, 18]])
相关问题