【问题标题】:Averaging over every n elements of an array without numpy在没有numpy的情况下对数组的每n个元素进行平均
【发布时间】:2016-10-24 11:15:24
【问题描述】:

我有一个数组。我想创建一个新数组,它是每三个元素的平均值。所以新数组的大小将是原始数组的三分之一。

举个例子:

 [1,2,3,1,2,3,1,2,3]

应该返回数组:

 [2,2,2]

任何人都可以提出一种有效的方法吗?我想在没有using numpy 的情况下执行此操作。

【问题讨论】:

  • 你有没有尝试过?
  • @Hackaholic 不多。
  • 查看 itertools 文档中的石斑鱼配方:docs.python.org/2/library/itertools.html#recipes
  • 优雅高效的方式是您提供的numpy。其他将包括手动拆分数组并计算它的平均值。既不高效也不优雅。

标签: python arrays average


【解决方案1】:

有什么问题?

a = [1,2,3,4,5,6,7,8,9]
def reduce_list(any_list, number_of_values_to_combine):
    ret_list = []
    for i in range(len(any_list)//number_of_values_to_combine):
        new_value = 0
        for j in range(number_of_values_to_combine):
            new_value += any_list[i*number_of_values_to_combine + j]
        ret_list.append(new_value/number_of_values_to_combine)
    return ret_list

print reduce_list(a,3)

rest 将被忽略,如果有 f.e. 7 个元素组合成 3 个元素,结果将是 2 个元素

【讨论】:

    【解决方案2】:
    l = [1,2,3,2,1,4,3,2,4,5,6,4,3,1,5]
    n = 3
    sub = [l[(n-1) + i*n] for i in range(int(len(l)/n))]
    avg_every_third_element = sum(sub)/len(sub)
    

    下次展示你的努力。如果没有,没有人可以帮助您改进您的方法。大多数问题(如您的问题)都可以通过一点点的研究来解决。

    【讨论】:

      【解决方案3】:
      a = [1,2,3,1,2,3,1,2,3]
      array_result = []
      
      for i in range(a):
          if i%3 == 0:
              new_number = (a[i]+a[i-1]+a[i-2])/3
              array_result.append(new_number)
      

      这对我有用。

      【讨论】:

        猜你喜欢
        • 2013-04-04
        • 1970-01-01
        • 2021-05-13
        • 1970-01-01
        • 2023-03-25
        • 2020-09-26
        • 1970-01-01
        • 1970-01-01
        • 2013-06-08
        相关资源
        最近更新 更多