python的分段函数,python怎么编写分段函数
Python如何定义分段函数?以下是分段函数:
一开始我写了一个简单版本的log_norm0,只能一个元素一个元素的进行。别想了。对于一个有大量元素的向量,肯定会变成乌龟。
后来想到用一个指标函数来区分分割的两种情况,得到了log_norm1。但这种情况比较特殊,并不是每次都能施工成功。
相关:《Python视频教程》
最后发现numpy中有一个函数分段(x,condlist,funclist,* args,* kw),专门用来构造分段函数。x是输入,condlist表示分段的条件,funclist表示对应分段的处理函数。这给出了log_norm2。
#元素方面
def log_norm0(x):
如果x=0:
返回NP . log(x ^ 1)
else:
return - np.log(- x 1)
#指示器
定义log_norm1(x):
# ind=np.where(x 0,1,0)
ind=(x ^ 0)
返回NP . log(x * ind 1)-NP . log(-x *(1.0-ind)1)
# numpy.piecewise()
定义log_norm2(x):
返回NP。分段(x,[x=0,x ^ 0],[lambda x3360np.log (1x),lambda x3360-np.log (1-x)])最后观察各个函数的运行时间。
tic=time.time()
适用于范围内的I(x .尺寸):
y[i]=log_norm0(x[i])
toc=time.time()
打印( log0: ,目录- tic)
tic=time.time()
y=log_norm1(x)
toc=time.time()
打印(日志1: ,目录- tic)
tic=time.time()
z=log_norm2(x)
toc=time.time()
根据print(log2: ,toc-tic)的观察结果,指示函数是最快的方法,但和分段差别不大。
航海日志36860 . 88868888661
测井记录0 . 58680 . 68868886861
Log2: 0.5942573547363281以上是Python如何定义分段函数的细节。请多关注热门IT软件开发工作室的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。