如何以最有效的方式在数组中添加元素?
How to add elements within an array the most efficient way?
我有一个数组
myarray = [[a, b], [c, d], [e, f]]
我想得到
myarray_2 = [a + c + e, b + d + f]
如何在没有循环的情况下执行此操作?什么是最有效的方法或者最像 pythonic 的方法?
您可以使用 zip
、sum
和列表理解:
myarray = [[1, 2], [3, 4], [5, 6]]
myarray_2 = [sum(t) for t in zip(*myarray)]
print(myarray_2)
输出:
[9, 12]
无论子列表的大小如何,这都有效。
试试这个:
myarray_2 = list(map(sum, zip(*myarray)))
例如,如果 myarray = [[1, 2], [3, 4], [5, 6]]
,myarray_2
将是 [9, 12]
单行方法可能是转置矩阵并对行求和:
list(map(sum, zip(*myarray)))
习语 zip(*myarray)
通过在包含每一行中相应元素的元组上创建迭代器来转置输入。
如果您要处理数值数据,使用 numpy 可能是更好的方法:
np.array(myarray).sum(axis=0)
我有一个数组
myarray = [[a, b], [c, d], [e, f]]
我想得到
myarray_2 = [a + c + e, b + d + f]
如何在没有循环的情况下执行此操作?什么是最有效的方法或者最像 pythonic 的方法?
您可以使用 zip
、sum
和列表理解:
myarray = [[1, 2], [3, 4], [5, 6]]
myarray_2 = [sum(t) for t in zip(*myarray)]
print(myarray_2)
输出:
[9, 12]
无论子列表的大小如何,这都有效。
试试这个:
myarray_2 = list(map(sum, zip(*myarray)))
例如,如果 myarray = [[1, 2], [3, 4], [5, 6]]
,myarray_2
将是 [9, 12]
单行方法可能是转置矩阵并对行求和:
list(map(sum, zip(*myarray)))
习语 zip(*myarray)
通过在包含每一行中相应元素的元组上创建迭代器来转置输入。
如果您要处理数值数据,使用 numpy 可能是更好的方法:
np.array(myarray).sum(axis=0)