median_absolute_deviation 2D-массива выдает AxisError: ось 1 выходит за границы для массива размерности 1 - PullRequest
0 голосов
/ 09 июля 2020

Фрагмент кода:

import scipy as sp 
import numpy as np

print(temps.shape)
print(temps.ndim)
mad = sp.stats.median_absolute_deviation(temps, axis=1, nan_policy='omit')
med = np.median(temps, axis=1)
mean = np.mean(temps,axis=1)

temps.shape равно (992,2048) и temps.ndim равно 2

, но строка 3 с использованием median_absolute_deviation выдает AxisError : ось 1 находится за пределами массива размерности 1. Если я закомментирую строку, med и mean будут работать нормально без ошибок оси. Почему это происходит и как мне вычислить среднее абсолютное отклонение по оси длиной 2048?

1 Ответ

0 голосов
/ 10 июля 2020

У меня нет вашего точного массива, но я попытался воспроизвести ваш код, чтобы вызвать ошибку:

from scipy.stats import median_absolute_deviation
import numpy as np

# mimicking your data with random numbers
temps = np.random.normal(0.0, 1.0, size=(992,2048))
# setting values of axis 1 to NaN
temps[:,1] = np.nan

print(temps.shape)
print(temps.ndim)
mad = median_absolute_deviation(temps, axis=1, nan_policy='omit')
med = np.median(temps, axis=1)
mean = np.mean(temps,axis=1)

С аргументом nan_policy='omit' в median_absolute_deviation() вы фактически просите функцию удалить все значения np.nan из массива temps.

Как я показал выше, если есть целый столбец с этими значениями, они удаляются вызовом nan_policy='omit', и поэтому массив temps сводится к массиву размерности 1, и возникают ошибки, которые вы видите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...