Работая над некоторыми инструментами статистического анализа, я обнаружил, что существует как минимум 3 метода Python для расчета среднего и стандартного отклонения (не считая методик «брось свои собственные»):
np.mean()
, np.std()
(с ddof = 0 или 1)
statistics.mean()
, statistics.pstdev()
(и / или statistics.stdev
)
scipy.statistics
пакет
Это заставляет меня чесать голову. Должен быть один очевидный способ сделать это, верно? :-) Я нашел несколько старых SO сообщений. Один сравнивает преимущества производительности np.mean()
против statistics.mean()
. Это также подчеркивает различия в операторе суммы. Этот пост здесь:
почему статистика так медленна
Я работаю с массивом данных numpy
, и мои значения находятся в небольшом диапазоне (от -1,0 до 1,0 или от 0,0 до 10,0), поэтому функции numpy
кажутся очевидным ответом для моего приложения. У них хороший баланс скорости, точности и простоты реализации для данных, которые я буду обрабатывать.
Похоже, модуль statistics
предназначен в первую очередь для тех, у кого есть данные в списках (или других формах), или для широко варьирующихся диапазонов [1e+5, 1.0, 1e-5]
. Это все еще справедливое заявление? Существуют ли улучшения numpy
, которые устраняют различия в операторе суммы? Последние разработки приносят какие-то другие преимущества?
Численные алгоритмы, как правило, имеют положительные и отрицательные стороны: некоторые из них быстрее или точнее, или требуют меньшего объема памяти. Перед лицом выбора из 3-4 способов сделать расчет ответственность разработчика состоит в том, чтобы выбрать «лучший» метод для его / ее приложения. Обычно это баланс между конкурирующими приоритетами и ресурсами.
Мое намерение состоит в том, чтобы запросить ответы у программистов, имеющих опыт статистического анализа, чтобы получить представление о сильных и слабых сторонах описанных выше методов (или других / более эффективных методов). [ Меня не интересуют спекуляции или мнения без подтверждающих фактов. ] Я сам приму решение на основе моих требований к дизайну.