作者:我的爱来了2012_800 | 来源:互联网 | 2023-02-01 11:04
有一个更好的方法吗?
if a > 1:
a = 1
if a <0:
a = 0
我正在考虑使用一个函数,因为我的代码中有很多这些函数,很奇怪是否有更简单易懂的方法.
1> Willem Van O..:
你描述的通常称为剪裁.有几种方法可以进行裁剪.
图书馆(
numpy
)
你可以用numpy.clip
它:
numpy.clip(a, a_min, a_max, out=None)
所以:
import numpy
numpy.clip(x,0,1)
虽然由于Python中的函数调用很昂贵,并且numpy
通常批量处理数据,但对于单个值,它将导致计算开销.
例如:
>>> x = -2.5
>>> numpy.clip(x,0,1)
0.0
>>> x = 2.5
>>> numpy.clip(x,0,1)
1.0
>>> x = 0.5
>>> numpy.clip(x,0,1)
0.5
通常用于对(大)矩阵numpy
执行操作,例如,如果您必须处理1000x1000矩阵,那么使用numpy
肯定会得到回报.
纯Python
甲纯Python方法可以用来获得:
max(0,min(1,x))
但是这里有两个调用,因此它比使用if
语句慢.
最后,如果你坚持使用if
-code,你可以使用以下方法优化它elif
:
if x <0:
x = 0
elif x > 1:
x = 1
或者更通用的功能:
def clip(x,min,max):
if x max:
return max
return x
很有帮助.谢谢!