Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何截断2D numpy数组的值_Python_Numpy - Fatal编程技术网

Python 如何截断2D numpy数组的值

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(

我有一个二维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([[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)