В numpy функция для вычисления стандартного отклонения ожидает список значений, таких как [1, 2, 1, 1], и вычисляет стандартное отклонение от них.В моем случае у меня есть вложенный список значений и счетчиков, таких как [[1, 2], [3, 1]], где первый список содержит значения, а второй содержит счетчик частоты появления соответствующих значений.
Я ищу чистый способ вычисления стандартного отклонения для данного списка, как указано выше, чистый смысл
- уже существующей функции в numpy, scipy, pandasи т. д.
- более питонический подход к проблеме
- более сжатое и удобочитаемое решение
У меня уже есть рабочее решение, которое преобразует вложенное значение счетчикаПеречислите в плоский список значений и вычислите стандартное отклонение с помощью функции, описанной выше, но я нахожу это не слишком приятным и предпочел бы другой вариант.
Минимальный рабочий пример моего обходного пути:
import numpy as np
# The usual way
values = [1,2,1,1]
deviation = np.std(values)
print(deviation)
# My workaround for the problem
value_counts = [[1, 2], [3, 1]]
values, counts = value_counts
flattened = []
for value, count in zip(values, counts):
# append the current value count times
flattened = flattened + [value]*count
deviation = np.std(flattened)
print(deviation)
Вывод
0.4330127018922193
0.4330127018922193
Спасибо за любые идеи или предложения:)