У меня есть массив. Я хочу заменить значения > 5
на 1
, а значения <= 5
- 0
. Я также должен учитывать недопустимые значения (999
).Python: как заменить значения в маске в соответствии с условием
1) Мой массив:
>>> import numpy
>>> a = numpy.array([ [[2, 5, 999],[0, 12, 1]], [[999, 8, 7],[7, 11, 6]] ])
>>> a
array([[[ 2, 5, 999],
[ 0, 12, 1]],
[[999, 8, 7],
[ 7, 11, 6]]])
2) Я маскировать недопустимые значения:
>>> mask_a = (a==999)
>>> a_masked = numpy.ma.masked_array(a, mask = mask_a)
>>> print a_masked
[[[2 5 --]
[0 12 1]]
[[-- 8 7]
[7 11 6]]]
3) Я заменяющие значения < = 5 нулями:
>>> a_masked[a_masked<=5]=0
>>> print a_masked
[[[0 0 --]
[0 12 0]]
[[-- 8 7]
[7 11 6]]]
4) Я хочу заменить теперь значения> 5 на единицы:
>>> a_masked[a_masked>5]=1
>>> print a_masked
[[[0 0 1]
[0 1 0]]
[[1 1 1]
[1 1 1]]]
Почему он не учитывает значения = 999, которые уже были замаскированы ???
Я хочу, чтобы получить следующий результат:
[[[0 0 --]
[0 1 0]]
[[-- 1 1]
[1 1 1]]]
I спросил точно [тот же вопрос] (http://stackoverflow.com/questions/19957192/substituting-values-in-a-numpy-masked-array) вчера ... – abudis