Как сделать что-то условно с матрицей - PullRequest
0 голосов
/ 26 апреля 2019

Я хочу применить функцию к ячейкам матрицы, выбранной логической маской. То есть вместо этого пишем:

#given numpy arrays a[dimX][dimY], mask[dimX][dimY]

for i in range(dimX):
     for j in range(dimY):
         if(mask[i, j]):
             a[i, j] +=1

Я хотел бы сделать это, возможно, с помощью одной команды, работающей непосредственно в numpy.

Моя общая цель - ускорить симуляцию, и я не знаю, как применить сложную, условную (как выше) функцию к глобальной матрице. (Для любопытных я пытаюсь реализовать поток воздуха методом решетки Больцмана). Мотивация заключается в том, что только недавно я понял, насколько огромна разница во времени, когда используются простые команды вместо итерации по матрице.

Если ответ не простой, я был бы признателен за более подробную ссылку на некоторые материалы, посвященные проблеме.

1 Ответ

0 голосов
/ 26 апреля 2019

Вы можете использовать np.where ():

a = np.where(mask > 0, a + 1, a)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...