Python替换NumPy数组中大于某个值的所有元素

参考https://blog.csdn.net/qq_42393859/article/details/86524805

arr = np.random.randint(0, 300, (500,500))
# 创建一个500x500, 范围在0到300之间的numpy数组

使用timeit测试语句执行时间, 对多行则使用%%timeit

1. 使用python内置索引

arr[arr > 255] = 255

2. np.minimum(), np.maximum()和np.clip()

对大于255的替换成255
result = np.minimum(arr, 255)
对小于0的替换成0
result = np.maximum(arr, 0)
如果不创建新的数组result, 只做in-place修改, 则使用参数out:
np.minimum(arr, 255, out=arr)
对于上限和/或下限
result = np.clip(arr, 0, 255)
同样有in-place
np.clip(arr, 0, 255, arr)
注意: in-place的修改要更慢一些

3. np.where()

对大于255的使用255替换
np.where(nums > 255, 255, nums)
该方法速度更快

4. np.putmask()

np.putmask(arr, arr > 255, 255)

你可能感兴趣的:(Python替换NumPy数组中大于某个值的所有元素)