【发布时间】:2016-10-13 10:58:00
【问题描述】:
我有一个 csv 文件:
#col1 #col2 ... #col253
33, 123, ... 99
19, 409, ... 24
34, 239, ... 60
... ... ... ..
还有一个字典,其值存储所选列的开始和结束索引:
d = {
'win': [(11, 55), (194, 233)],
'lose': [(72, 111), (133, 172)],
'neut': [(0, 10), (51, 71), (112, 132), (173, 193)]
}
我的目标是计算字典中某个键的所有选定列的每行平均值。
例如,对于第一行的'win' 块,选择11, 12, ...55, 194, 195,...233 列并计算平均值。
我现在使用的是什么:
x = np.loadtxt('filename.csv', delimiter=',')
for line in x:
selected = [line[start:end + 1] for (start, end) in d['win']]
...
selected 将是[array([39, 12, 94,...]), array([3, 4, ...])],不能传递给np.mean()。
所以列表中的数组应该合并为一个,我不知道如何优雅地做,或者迭代地将所有数字相加然后取平均值,我认为这很难看。
已编辑:
一个丑陋的方法可能是:
average = sum(map(sum, selected)) / sum(map(len, selected))
【问题讨论】:
-
您是在寻找每行的总平均值,还是每行的平均值?从您的示例来看,它看起来像是每行单独的方法。
-
@IljaEverilä 对于每一行,抱歉描述不好。