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

时间:2019-02-16 11:36:02

标签: python numpy numpy-ndarray

我有一个带有零和非零以及形状(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

有没有更优雅的方法来实现这一目标?

1 个答案:

答案 0 :(得分:2)

正如ThomasKühn在评论中正确地写到的那样,它足以创建对该数组子部分的引用并对其进行修改。因此,下面的工作完成了。

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