2016-05-04 5 views
2

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

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

ответ

3

Предполагая, что вы хотите сохранить пренебрежимо малых, самое простое решение, чтобы маскировать пренебрежимо малых, прежде чем передать массив 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)])