Стандартное отклонение Numpy несовместимо при использовании полного массива и среза массива ⇐ Python
Стандартное отклонение Numpy несовместимо при использовании полного массива и среза массива
У меня есть двумерный массив значений float64, sVals, для которого я беру стандартное отклонение от использования np.std. Я могу сделать весь массив сразу:
np.std(sVals, axis=0) Выход[38]: массив([6.70850094e-19, 5.95933349e-06, 4.36348268e-08, 4.19474793e-09, 7.53294313e+03, 5.07856623e-06, 1.23400241e-08, 1.30104261e-18, 1.88651178e-17, 1.16415322e-09, 7.37257477e-18, 2.08166817e-17, 5.42101086e-19, 1.59919820e-18]) Однако, когда я делаю только первый столбец:
np.std(sVals[:, 0]) Вышел[28]: 6.776263578034403e-21 Мой ответ отличается на 2 порядка. Я думаю, что это ошибка, связанная с точностью, но если и массив, и срез имеют формат float64, я не понимаю, почему я получаю несоответствие между этими двумя случаями.
Еще одним доказательством того, что это может быть связано с точностью, является второй столбец:
np.std(sVals[:, 1]) Out[24]: 5.9593334890609005e-06 (соответствует второму элементу из Out[38]) Ответ правильный. Если я возьму другой столбец со стандартным отклонением того же порядка, скажем, 10:
np.std(sVals[:, 10]) Вышел[39]: 4.336808689942018e-19 Он снова отличается от ответа в Out[38] (7.37e-18).
Я не могу себе представить, чем будет отличаться получение среза от выполнения всего массива с указанной осью.
У меня есть двумерный массив значений float64, sVals, для которого я беру стандартное отклонение от использования np.std. Я могу сделать весь массив сразу:
np.std(sVals, axis=0) Выход[38]: массив([6.70850094e-19, 5.95933349e-06, 4.36348268e-08, 4.19474793e-09, 7.53294313e+03, 5.07856623e-06, 1.23400241e-08, 1.30104261e-18, 1.88651178e-17, 1.16415322e-09, 7.37257477e-18, 2.08166817e-17, 5.42101086e-19, 1.59919820e-18]) Однако, когда я делаю только первый столбец:
np.std(sVals[:, 0]) Вышел[28]: 6.776263578034403e-21 Мой ответ отличается на 2 порядка. Я думаю, что это ошибка, связанная с точностью, но если и массив, и срез имеют формат float64, я не понимаю, почему я получаю несоответствие между этими двумя случаями.
Еще одним доказательством того, что это может быть связано с точностью, является второй столбец:
np.std(sVals[:, 1]) Out[24]: 5.9593334890609005e-06 (соответствует второму элементу из Out[38]) Ответ правильный. Если я возьму другой столбец со стандартным отклонением того же порядка, скажем, 10:
np.std(sVals[:, 10]) Вышел[39]: 4.336808689942018e-19 Он снова отличается от ответа в Out[38] (7.37e-18).
Я не могу себе представить, чем будет отличаться получение среза от выполнения всего массива с указанной осью.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Вычислить стандартное отклонение в Pandas.DataFrame с пользовательским средним значением
Anonymous » » в форуме Python - 0 Ответы
- 83 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Получите стандартное отклонение строки, игнорируя минимальное и максимальное значения.
Anonymous » » в форуме Python - 0 Ответы
- 112 Просмотры
-
Последнее сообщение Anonymous
-