我有一个二维numpy数组(uint16),我如何截断超过某个界限(比如255)的所有值?其他值必须保持不变。使用嵌套循环似乎是低效和笨拙的。
7vhp5slm1#
实际上有一个特定的方法,"clip":
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)
wgmfuz8q2#
import numpy as np my_array = np.array([[100, 200], [300, 400]],np.uint16) my_array[my_array > 255] = 255
输出将是
wbgh16ku3#
如果您的问题不像JBernardo的答案那样与位深度相关,那么更一般的方法是:(经过编辑,我的回答现在和他的差不多)
def trunc_to( my_array, limit ): too_high = my_array > limit my_array[too_high] = limit
这里有一个很好的介绍链接numpy布尔索引。
3条答案
按热度按时间7vhp5slm1#
实际上有一个特定的方法,"clip":
输出:
wgmfuz8q2#
输出将是
wbgh16ku3#
如果您的问题不像JBernardo的答案那样与位深度相关,那么更一般的方法是:(经过编辑,我的回答现在和他的差不多)
这里有一个很好的介绍链接numpy布尔索引。