Numpy разворачивает, игнорируя NaN

У меня есть длинный массив numpy с записями направления ветра, и я пытаюсь использовать unwrap numpy перед запуском алгоритма для обнаружения скачков в данных. Данные содержат NaN, и numpy, похоже, не может это обработать. Как только встречается один NaN, все последующие точки данных, возвращаемые unwrap, также преобразуются в NaN. Есть ли способ обойти это?

Я думаю, что мой вопрос сводится к тому же вопросу, который опубликован здесь, но там делается только вывод, что ошибка связана с NaN в данных, и никакого решения не предлагается.


person Peter9192    schedule 04.05.2016    source источник


Ответы (1)


Предполагая, что вы хотите сохранить NaN, самое простое решение — замаскировать NaN перед передачей массива в unwrap и использовать ту же маску для обратной записи результата:

a[~np.isnan(a)] = np.unwrap(a[~np.isnan(a)])

Если вы хотите сохранить исходный массив, используйте np.copy:

b = np.copy(a)
b[~np.isnan(b)] = np.unwrap(b[~np.isnan(b)])
person ecatmur    schedule 04.05.2016