我有一个二维numpy数组(uint16),如何将某个障碍(比如255)上的所有值截断到该障碍?其他值必须保持不变。使用嵌套循环似乎是无效和笨拙的。
答案 0 :(得分:19)
实际上有一种特定的方法,'剪辑':
import numpy as np
my_array = np.array([[100, 200], [300, 400]],np.uint16)
my_array.clip(0,255) # clip(min, max)
输出:
array([[100, 200],
[255, 255]], dtype=uint16)
答案 1 :(得分:6)
如果您的问题与JBernardo的答案没有关系,那么更常见的方法就是: (编辑后,我的答案现在与他的答案非常相似)
def trunc_to( my_array, limit ): too_high = my_array > limit my_array[too_high] = limit
Here是numpy bool索引的一个很好的介绍链接。
答案 2 :(得分:5)
import numpy as np
my_array = np.array([[100, 200], [300, 400]],np.uint16)
my_array[my_array > 255] = 255
输出将是
array([[100, 200],
[255, 255]], dtype=uint16)