代码之家  ›  专栏  ›  技术社区  ›  Caterina

如何以最有效的方式在数组中添加元素?

  •  0
  • Caterina  · 技术社区  · 5 年前

    我有一个数组

    myarray = [[a, b], [c, d], [e, f]]
    

    我想得到

    myarray_2 = [a + c + e, b + d + f]
    

    我怎么能做到这一点没有循环?什么是最有效的方法,或者也许是最蟒蛇式的方法?

    3 回复  |  直到 5 年前
        1
  •  1
  •   Mad Physicist    5 年前

    一种单行方法可以是对矩阵进行转置并对行进行求和:

    list(map(sum, zip(*myarray)))
    

    成语 zip(*myarray) 通过在包含每行相应元素的元组上创建迭代器来转置输入。

    如果要处理数值数据,使用numpy可能是更好的方法:

    np.array(myarray).sum(axis=0)
    
        2
  •  1
  •   DjaouadNM    5 年前

    你可以用 zip , sum ,以及列表理解:

    myarray = [[1, 2], [3, 4], [5, 6]]
    
    myarray_2 = [sum(t) for t in zip(*myarray)]
    
    print(myarray_2)
    

    输出:

    [9, 12]
    

    无论子列表的大小,这都将起作用。

        3
  •  1
  •   Arkistarvh Kltzuonstev    5 年前

    试试这个:

    myarray_2 = list(map(sum, zip(*myarray)))
    

    例如,如果 myarray = [[1, 2], [3, 4], [5, 6]] , myarray_2 会是 [9, 12]