У меня есть 2-й массив, построенный из растрового изображения. Растровое изображение не имеет значения данных, назначенного для -3.4028231e + 38, я пытаюсь заменить это значение на «nan», но я не могу найти это значение, когда я применяю к нему условный оператор.Как заменить значение данных -3.4028231e + 38 на numpy.nan
мои данные следующим образом:
>>> slice22 = inndvi[0:2,0:2]
>>> slice22
array([[ -3.40282306e+38, -3.40282306e+38],
[ -3.40282306e+38, -3.40282306e+38]], dtype=float32)
когда я пытаюсь проверить эти значения, если оператор:
>>> if slice22[0][0] ==-3.40282306e+38:
... print "yes"
... else:
... print "no"
...
no
выход «нет»
В связи с этим я являюсь не может назначить 3.40282306e + 38 на numpy.nan следующим образом:
slice22[slice22 == 3.40282306e+38] = numpy.nan
Еще одна вещь, которую я хотел бы упомянуть, заключается в том, что мой набор данных колеблется от +2 до -2 в растре. Я попытался использовать диапазон, чтобы исключить значение 3.40282306e + 38, но все же я получаю ошибки.
>>> slice22 [slice22 < 2 and slice22 >2 ]= np.nan
Runtime error
Traceback (most recent call last):
File "<string>", line 1, in <module>
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
Вы не можете использовать операции равенства чисел с плавающей запятой. – Alik
вы можете использовать 'slice22 [slice22
realli
Пожалуйста, прочитайте http://floating-point-gui.de/ – Alik