у меня есть 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ä Для каждой строки, извините за плохое описание. – Spike