Я пытаюсь установить элементы массива ниже порогового значения nan. Это часть процесса ОК/КК, и входящие данные могут уже иметь слоты, которые являются нан.
Так, например, мой порог может быть -1000, и, следовательно, я хотел бы установить -3000 на nan в следующем массиве
x = np.array([np.nan,1.,2.,-3000.,np.nan,5.])
Это следующее:
x[x < -1000.] = np.nan
производит правильное поведение, но также и RuntimeWarning, но накладные расходы на отключение предупреждения
warnings.filterwarnings("ignore")
...
warnints.resetwarnings()
довольно тяжелый и потенциально немного небезопасный.
Попытка проиндексировать дважды с причудливой индексацией следующим образом не дает никакого эффекта:
nonan = np.where(~np.isnan(x))[0]
x[nonan][x[nonan] < -1000.] = np.nan
Я предполагаю, что это связано с тем, что копия создается из-за целочисленного индекса или использования двойного индексирования.
У кого-нибудь есть относительно простое решение? Было бы неплохо использовать в процессе маскированный массив, но конечным продуктом должен быть ndarray, и я не могу вводить новые зависимости. Спасибо.