Изменить часть массива numpy на основе условия - PullRequest
0 голосов
/ 16 февраля 2019

У меня есть массив с нулями, ненулевыми значениями и формой (10,10).К части этого массива мне нужно добавить определенное значение, где начальное значение не равно нулю.

a[2:7,2:7] += 0.5 #But with a condition that a[a!=0]

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

b = a.copy()
b[b!=0] = 1
b[2:7,2:7] *= 0.5
b[b ==1] =0
a += b

Есть ли более элегантный способ добиться этого?

1 Ответ

0 голосов
/ 16 февраля 2019

Как правильно написал Томас Кюн в комментарии, его достаточно, чтобы создать ссылку на эту часть массива и изменить ее.Таким образом, следующее делает работу.

b = a[2:7,2:7]
b[b!=0] += 0.5
...