根据条件修改 numpy 数组的一部分

Modify a part of numpy array based upon a condition

我有一个带有零和非零以及形状 (10,10) 的 numpy 数组。 对于这个数组的一个子部分,我需要添加一个特定的值,其中初始值不为零。

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

有没有更优雅的方法来实现这个?

正如 Thomas Kühn 在评论中正确写道的那样,它足以创建对数组该子部分的引用并对其进行修改。所以下面的工作。

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