【问题标题】:summing a column in python在python中对一列求和
【发布时间】:2021-11-16 10:11:56
【问题描述】:

我有一个列表列表,其中包含数字数据,一种矩阵。 我想创建一个函数来总结我以后选择的任何列(1+2+9+10=?、3+4+11+12=?等) 限制是我想通过使用 for 循环和老式 python,没有 numpy,最好没有 zip 函数来实现这一点。 在循环之外,我想计算每一列的平均值。 实现这一目标的最简单方法是什么? 到目前为止,这是我想出的:

data = [[1, 3, 5, 7], [2, 4, 6, 8], [9, 11, 13, 15], [10, 12, 14, 16]]

def calc_avg(data, column):
    total = 0
    for row in data:
        total +=  ....
    avg = total / len(calc_avg)

稍后,我会打印我选择的列的平均值。

【问题讨论】:

  • 我永远不会明白为什么我偶尔会看到不想使用zip的人...
  • total += row[column]?
  • 这能回答你的问题吗? Using an index to get an item
  • total += row[column],似乎有效。那么如何定义平均值呢?
  • total / len(data) ??

标签: python sum


【解决方案1】:

引入一个变量nr 来记录循环时添加的行数。

def calc_avg(data, column):
    total = 0
    nr = 0
    for row in data:
        nr += 1
        total +=  row[column]
    return total / nr

【讨论】:

    【解决方案2】:

    您可能需要一些计数器来跟踪您的平均“分母” -

    data = [[1, 3, 5, 7], [2, 4, 6, 8], [9, 11, 13, 15], [10, 12, 14, 16]]
    
    def calc_avg(data, column):
        total = 0
        counter = 0
        for row in data:
            total +=  row[column]
            counter += 1
        avg = total / counter
        return avg
    

    【讨论】:

    • 或者直接使用len(data)
    【解决方案3】:

    您可以编写一个简单的函数来收集所有列值并执行数学运算。 例如。

    def get_sum_avg(chosen_column, dataset):
        # filter the column values. Ignore rows with no such col
        chosen_column_values = [element[chosen_column - 1] for element in dataset if len(element) >= chosen_column]
        # find sum
        col_sum = sum(chosen_column_values)
    
        # find avg
        average = col_sum / len(chosen_column_values) if len(chosen_column_values) > 0 else 0
    
        return col_sum, average
    
    
    data = [[1, 3, 5, 7], [2, 4, 6, 8], [9, 11, 13, 15], [10, 12, 14, 16]]
    print(get_sum_avg(1, data))
    

    【讨论】:

      猜你喜欢
      • 2019-06-01
      • 1970-01-01
      • 2012-11-11
      • 1970-01-01
      • 1970-01-01
      • 2021-11-23
      • 1970-01-01
      • 2013-10-31
      • 2019-01-21
      相关资源
      最近更新 更多