Быстрая замена на месте некоторых значений в массиве - PullRequest
16 голосов
/ 03 ноября 2011

Должен быть более быстрый способ замены значений, верно? У меня есть 2D-массив, представляющий сетку высот / батиметрии. Я хочу заменить что-либо более 0 на NAN, и этот способ очень медленный:

for x in range(elevation.shape[0]):
    for y in range(elevation.shape[1]):
        if elevation[x,y] > 0:
            elevation[x,y] = numpy.NAN

Похоже, так будет намного лучше!

Ответы [ 2 ]

21 голосов
/ 03 ноября 2011

Будет делать следующее:

elevation[elevation > 0] = numpy.NAN

См. Индексирование с помощью логических массивов в руководстве по NumPy.

3 голосов
/ 03 ноября 2011
np.putmask(elevation, elevation > 0, np.nan)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...