У меня большая проблема в вычислении маски, содержащей нули и единицы, но сохраняющей значения нан.
Допустим, у меня есть numpy-ndarray
ab = numpy.arange(0,10,0.5)
Теперь я подражаюимеют нан-значение: ab[3]=0
.Теперь «ab» выглядит следующим образом:
ab= array([ 0. , 0.5, 1. , nan, 2. , 2.5, 3. , 3.5, 4. , 4.5,
5.,5.5, 6. , 6.5, 7. , 7.5, 8. , 8.5, 9. , 9.5])
Теперь я хочу замаскировать все значения ниже 5 на «0», а все остальные на «1», за исключением значений nan, которые должны остаться врезультат.
Я не могу сделать это с помощью 'numpy.where', потому что он удаляет значения nan:
In [12]: numpy.where(a < 5, 1.0, 0.0)
/usr/bin/ipython3:1: RuntimeWarning: invalid value encountered in less
#!/usr/bin/env python3
Out[12]: array([ 1., 1., 1., 0., 1., 1., 1., 1., 1., 1., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0.])
Что мне нужно сделать, чтобы сохранить значения nan?
Обновление: Решение с xarray легко, потому что последняя версия поддерживает функцию с тремя аргументами where.Однако NaN-значения остаются в файле результатов.