Как рассчитать стандартное отклонение пар счет-значение - PullRequest
1 голос
/ 04 мая 2019

В 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

Спасибо за любые идеи или предложения:)

1 Ответ

1 голос
/ 04 мая 2019

Вы просто ищете numpy.repeat.

numpy.std(numpy.repeat(value_counts[0], value_counts[1]))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...