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

因为您实际上需要一个不同的数组,它是arr,其中arr < 255,而255否则,可以简单地执行以下操作:result = np.minimum(arr, 255)

一般来说,对于下限和/或上限:result = np.clip(arr, 0, 255)

如果您只想访问255以上的值,或者更复杂的值,@mtitan8的答案更一般,但是np.clip和np.minimum(或者np.maximum)对于您的情况来说更好更快:In [292]: timeit np.minimum(a, 255)

100000 loops, best of 3: 19.6 µs per loop

In [293]: %%timeit

.....: c = np.copy(a)

.....: c[a>255] = 255

.....:

10000 loops, best of 3: 86.6 µs per loop

如果您想在适当的地方(即修改arr,而不是创建result),可以使用np.minimum的out参数:np.minimum(arr, 255, out=arr)

或者np.clip(arr, 0, 255, arr)

(由于参数的顺序与函数的定义相同,out=名称是可选的。)

对于就地修改,布尔索引可以大大加快速度(无需分别创建和修改副本),但仍然不如minimum:In [328]: %%timeit

.....: a = np.random.randint(0, 300, (100,100))

.....: np.minimum(a, 255, a)

.....:

100000 loops, best of 3: 303 µs per loop

In [329]: %%timeit

.....: a = np.random.randint(0, 300, (100,100))

.....: a[a>255] = 255

.....:

100000 loops, best of 3: 356 µs per loop

为了进行比较,如果您想用最小值和最大值来限制您的值,而不使用clip,那么您必须执行两次这样的操作,如下所示np.minimum(a, 255, a)

np.maximum(a, 0, a)

或者a[a>255] = 255

a[a<0] = 0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值