Я зацикливаюсь на большом замаскированном массиве вдоль указанной оси, используя поэлементное сравнение между текущими значениями индекса и предыдущими минимумами.
Ниже приведен упрощенный пример для иллюстрации проблемы.Если одно из значений замаскировано, а другое допустимо, numpy.minimum()
возвращает замаскированное значение.Можно ли изменить это поведение так, чтобы вместо него возвращалось действительное значение?
x = np.random.randn(5).round(2)
x[[2,4]] = np.nan
print(x)
print(np.minimum(x[-1], x[-2]))
y = np.ma.masked_invalid(x)
print(y)
print(np.minimum(y[-1], y[-2]))
>> [-1.21 2.02 nan -0.31 nan]
>> nan
>> [-1.21 2.02 -- -0.31 --]
>> --
Вместо этого я хотел бы, чтобы возвращаемое значение было -0,31.
В этом простом примере я мог бы использовать y.compressed()
или что-то в этом роде, но в моем случае у меня есть несколько измерений, так что это не работает.
В настоящее время я использую очень высокое значение fill_value, которое работает, поскольку существует физическое ограничение на данные, но я хотел бы иметь более общее решение.