Игнорирование NaN при интерполяции сетки в Python

У меня есть поле скорости с координатной сеткой, которое я хочу интерполировать в Python. В настоящее время я использую RectBivariateSpline scipy.interpolate для этого, но я хочу иметь возможность определять края моего поля, устанавливая определенные значения в сетке в NaN. Однако, когда я делаю это, интерполяция всей сетки нарушается, фактически делая ее NaN везде. По-видимому, это ошибка в scipy fitpack, так что лучше всего обойти это? Я хочу иметь возможность сохранить NaN в сетке, чтобы позже работать с краями и за пределами границ, но я не хочу, чтобы это влияло на интерполяцию в остальной части сетки.


person Abobie    schedule 22.02.2016    source источник


Ответы (2)


Все языки, которые правильно реализуют числа с плавающей запятой (включая python), позволяют вам проверять NaN, сравнивая число с самим собой.

x не равно x тогда и только тогда, когда x равно NaN.

Вы сможете использовать это для соответствующей фильтрации набора данных.

person Bathsheba    schedule 22.02.2016
comment
Конечно, но это не проблема. Проблема заключается в использовании RectBivariateSpline в сетке, где некоторым элементам разрешено быть NaN. Я не хочу отфильтровывать NaN, я хочу сохранить их, не позволяя им испортить интерполяцию. - person Abobie; 23.02.2016
comment
Вам придется их каким-то образом отфильтровать. Какое значение вы хотели бы принять для этих узлов? - person Bathsheba; 23.02.2016

Подгонка/интерполяция сплайнов носит глобальный характер, поэтому вполне вероятно, что даже один nan испортит всю сетку.

person ev-br    schedule 23.02.2016