Python 如何截断2D numpy数组的值
我有一个二维numpy数组(uint16),如何将某个屏障(比如255)以上的所有值截断到该屏障?其他值必须保持不变。使用嵌套循环似乎是无效和笨拙的Python 如何截断2D numpy数组的值,python,numpy,Python,Numpy,我有一个二维numpy数组(uint16),如何将某个屏障(比如255)以上的所有值截断到该屏障?其他值必须保持不变。使用嵌套循环似乎是无效和笨拙的 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) array(
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)
array([[100, 200],
[255, 255]], dtype=uint16)
如果您的问题与位深度的关系不像JBernardo的回答那样密切,那么更一般的做法是: (经过编辑,我的答案现在与他的答案基本相同) def trunc_to(我的_数组,限制): 过高=我的数组>限制 我的数组[太高]=限制
这是一个很好的numpy bool索引的介绍链接。实际上,有一个特定的方法来实现这个“剪辑”:
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)