Вычислите среднее значение по ключам dict с numpy - PullRequest
1 голос
/ 27 февраля 2020

Предположим, у меня есть следующий словарь:

mydict = {0: [1, 2, 3],
          1: [10, 20, 30],
          2: [100, 200, 300]}

Я хочу вычислить среднее значение индекса 1 для всех трех записей в dict. Моим первым намерением было сделать:

mean_value = np.mean(mydict[:][1])

, но это дает мне

"TypeError: unhashable type: 'slice'.

Хорошо, Хорошо, это имеет смысл. Но почему я не могу сделать:

mean_value = np.array(mydict[i][1] for i in range(3)).mean()

или

mean_value = np.mean(mydict[i][1] for i in range(3))

Ожидаемый результат будет "74", как в (2 + 20 + 200) / 3. Но я получаю

TypeError: неподдерживаемые типы операндов для /: 'generator' и 'int'

Ответы [ 3 ]

2 голосов
/ 27 февраля 2020

mean не принимает генератор, но может принять список:

mean_value = np.mean([mydict[i][1] for i in range(3)])
# Note the squares --^------------------------------^
1 голос
/ 27 февраля 2020

Вам нужно list values() из словаря, а затем сделать среднее. Вы можете напрямую получить среднее значение при index 1 as,

np.mean(list(mydict.values()),0)[1] 
1 голос
/ 27 февраля 2020

average = (mean(list(mydict.keys()))) - очень лаконичный и питонский c способ получить среднее значение словарного ключа. Это также избегает использования понимания списка, которое не является необходимым.

...