#python #performance #numpy
#python #Производительность #numpy
Вопрос:
Должен быть более быстрый способ замены значений на месте, верно? У меня есть 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
Похоже, что это намного лучший способ!
Ответ №1:
Это будет сделано следующим образом:
elevation[elevation > 0] = numpy.NAN
Смотрите раздел Индексирование с помощью логических массивов в руководстве по NumPy.
Ответ №2:
np.putmask(elevation, elevation > 0, np.nan)