Numpy - заменить число на NaN - PullRequest
27 голосов
/ 15 июля 2011

Я хочу заменить число на NaN в numpy и ищу функцию, подобную numpy.nan_to_num, кроме обратной.

Число, вероятно, изменится, поскольку обрабатываются разные массивы, поскольку каждый из них может иметь уникальное определение NoDataValue. Я видел людей, использующих словари, но массивы большие и заполнены как положительными, так и отрицательными числами. Я подозреваю, что неэффективно пытаться загрузить все это во что-либо для создания ключей.

Я попытался использовать следующее и numpy, требуя использовать any () или all (). Я понимаю, что мне нужно поэтапно выполнять итерации, но надеюсь, что встроенная функция сможет этого добиться.

def replaceNoData(scanBlock, NDV):
    for n, i in enumerate(array):
        if i == NDV:
            scanBlock[n] = numpy.nan

NDV - это значение GDAL без данных, а массив - это пустой массив.

Может быть, замаскированный массив - путь?

1 Ответ

42 голосов
/ 15 июля 2011
A[A==NDV]=numpy.nan

A == NDV создаст логический массив, который можно использовать в качестве индекса для A

...