【问题标题】:Sum array elements vertically with iteration通过迭代垂直求和数组元素
【发布时间】:2019-06-16 19:11:09
【问题描述】:

您好,我有一个数组,我想对元素进行垂直求和。只是想知道是否有任何功能可以轻松做到这一点?

a = [[ 1,  2,  3,  4,  5],
         [ 6,  7,  8,  9, 10],
         [11, 12, 13, 14, 15],
         [16, 17, 18, 19, 20],
         [21, 22, 23, 24, 25]]

我想打印1+6+11+16+21 , 2+7+12+17, 3+8+13, 4+9, 5的答案 如您所见,在每次迭代中,都会少一个元素。

【问题讨论】:

  • 您可能真的找不到以这种方式进行求和的预构建函数,因为它对这个问题相当“特定”并且通常并不总是有用的。尝试首先尝试解决方案,然后看看你想出了什么。如果您在尝试解决方案时遇到困难,那么我们可以尝试提供帮助。向我们展示真诚的努力
  • 这个没有具体的功能,但是你可以使用sum(list_comprehension)这个。
  • 到目前为止你尝试了什么?

标签: python arrays


【解决方案1】:

这是使用zip 和简单迭代的一种方法。

例如:

a = [[ 1,  2,  3,  4,  5],
         [ 6,  7,  8,  9, 10],
         [11, 12, 13, 14, 15],
         [16, 17, 18, 19, 20],
         [21, 22, 23, 24, 25]]

print([sum(v[:-i]) if i else sum(v) for i, v in enumerate(zip(*a))])

输出:

[55, 38, 24, 13, 5]

【讨论】:

    【解决方案2】:

    转换为 numpy 数组,然后使用以下列表推导

    a = np.array(a)
    [a[:5-i,i].sum() for i in range(5)]
    

    产生以下结果:

    [55, 38, 24, 13, 5]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-03
      • 2018-08-16
      • 1970-01-01
      相关资源
      最近更新 更多