我有一个形状为512x512的数组,其中包含第i个和第j个位置的0到100之间的数字。现在我想选择数组[i,j]&lt; 25和其他地方零。我试过array = array[where(array<25)]
,它给了我一维数组,但我想要2D。请帮我解决这个问题。
答案 0 :(得分:17)
一个解决方案:
result = (array < 25) * array
第一部分array < 25
为您提供了一个相同形状的数组,其中值为1(True),其中值小于25,否则为0(False)。与原始数组的元素相乘保留小于25的值并将其余值设置为0.这不会更改原始数组
另一种可能性是在原始数组中将所有&gt; = 25的值设置为零:
array[array >= 25] = 0
答案 1 :(得分:0)
我还想补充一点,您可以利用numpy视图来实现这一点:
>>> a = np.asarray([ [1,2], [3,4], [4,1], [6,2], [5,3], [0,4] ])
>>> b = a[:, 1] # lets say you only care about the second column
>>> b[b > 3] = 0
>>> print(a)
[[1 2]
[3 0]
[4 1]
[6 2]
[5 3]
[0 0]]
当您希望这些值不是0时,这很好。