python - 如何获取特定列表元素的平均值

标签 python numpy

我有以下部分输入文件(超过 500 行):

L1, a, b, 10, 20, pass,
L1, c, d, 11, 21, pass,
L1, e, f, 12, 22, pass,
L1, a, b, 13, 23, pass,
L1, e, f, 14, 34, pass,

我想得到重复项的平均值,即输出如下:

(其中对于 L1、a、b,11.5 = (10+13)/2、21.5 = (20+23)/2)

L1, a, b, 11.5, 21.5
L1, c, d, 11, 21
L1, e, f, 13, 28

我目前的初学者 python 代码如下-仍在努力调整它更好

 import csv
 from collections import defaultdict
 import numpy as np

 dd = defaultdict(list)
 with open("mean.csv") as input_file:
 for row in csv.reader(input_file):
            dd[tuple(row[:3])].append(float(row[3]))
            dd[tuple(row[:3])].append(float(row[4]))

 for k, v, m in dd.iteritems():
      if len(v) > 1:
           print (' '.join(k), np.mean(v), np.mean(m))

我得到的错误是:

   Traceback (most recent call last):
   File "average.py", line 11, in <module>
      for k, v, m in dd.iteritems():
   ValueError: need more than 2 values to unpack

最佳答案

未经测试,但像这样作为基础的东西可以适用于另一列......因为这只是目前的一个。

import csv
from collections import defaultdict
import numpy as np

dd = defaultdict(list)
with open('in.csv') as fin:
    for row in csv.reader(fin):
        dd[tuple(row[:3])].append(float(row[3]))

for k, v in dd.iteritems():
    if len(v) > 1:
        print ' '.join(k), np.mean(v)

关于python - 如何获取特定列表元素的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11640539/

相关文章:

python - python中默认函数参数的生命周期

python - 如何使用 h5py 从 HDF5 数据集中读取字符串

python - Numpy 数组切片期间的行与列向量返回

python - 在 PyQt5 中嵌入终端

python - Lomb-Scargle 与 FFT 功率谱 : crashes with evenly spaced data

python - Numpy uint8_t 数组到 vtkImageData

arrays - 二维数组上的 numpy Logical.xor

Python - 使用 Numpy 的多个矩阵的元素方式

python - 如何使用 curl 将文件上传到 Atlassian Confluence 页面

python - 没有名为 numpy 的模块