2D numpy数组中的阈值

时间:2016-04-19 13:31:39

标签: python numpy

我有一个形状为512x512的数组,其中包含第i个和第j个位置的0到100之间的数字。现在我想选择数组[i,j]&lt; 25和其他地方零。我试过array = array[where(array<25)],它给了我一维数组,但我想要2D。请帮我解决这个问题。

2 个答案:

答案 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时,这很好。