分段函数用python表达_Python如何定义分段函数

Python如何定义分段函数,函数,指示,是一个,元素,都能

Python如何定义分段函数

易采站长站,站长之家为您整理了Python如何定义分段函数的相关内容。

8e2a91bc233c84e4b555a9552fc9e923.jpg

Python如何定义分段函数呢?下面是一个分段函数:

205d0bf6ac39c928f66b87fa1b86aec9.jpg

一开始写了个简单版本log_norm0,只能逐元素一个一个得进行。不用想,对元素个数多的向量,肯定慢成乌龟。

后来想到使用一个指示函数,来区分分段的两种情况,就得到log_norm1。不过这种情况比较特殊,不是每次都能成功构造的。

相关推荐:《Python视频教程》

最后,查到numpy中有函数piecewise(x, condlist, funclist, *args, **kw),它是专门用来构造分段函数,x是输入,condlist表示分段的条件,funclist就表示对应分段的处理函数。这就得到了log_norm2。# elementwisedef log_norm0(x): if x >= 0: return np.log(x + 1) else: return - np.log(- x + 1)# indicatordef log_norm1(x): # ind = np.where(x > 0, 1, 0) ind = (x > 0) return np.log(x * ind + 1) - np.log(- x * (1.0 - ind) + 1)# numpy.piecewise()def log_norm2(x): return np.piecewise(x, [x >= 0, x < 0], [lambda x: np.log(1 + x), lambda x: - np.log(1 - x)])

最后,观察一个各个函数的运行时间。tic = time.time()for i in range(x.size): y[i] = log_norm0(x[i])toc = time.time()print('log0: ', toc - tic)tic = time.time()y = log_norm1(x)toc = time.time()print('log1: ', toc - tic)tic = time.time()z = log_norm2(x)toc = time.time()print('log2: ', toc - tic)

观察结果,还是使用指示函数的方法最快,不过跟piecewise差别不大。log0: 33.59282732009888log1: 0.4863457679748535log2: 0.5942573547363281以上就是关于对Python如何定义分段函数的详细介绍。欢迎大家对Python如何定义分段函数内容提出宝贵意见

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值