Python如何定义分段函数


当前第2页 返回上一页

最后,查到numpy中有函数piecewise(x, condlist, funclist, *args, **kw),它是专门用来构造分段函数,x是输入,condlist表示分段的条件,funclist就表示对应分段的处理函数。这就得到了log_norm2。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

# elementwise

def log_norm0(x):

    if x >= 0:

        return np.log(x + 1)

    else:

        return - np.log(- x + 1)

# indicator

def 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)])

最后,观察一个各个函数的运行时间。

1

2

3

4

5

6

7

8

9

10

11

12

13

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差别不大。

1

2

3

log0:  33.59282732009888

log1:  0.4863457679748535

log2:  0.5942573547363281

以上就是Python如何定义分段函数的详细内容,更多文章请关注木庄网络博客!!

返回前面的内容

相关阅读 >>

Python数据类型之元组的详细介绍

Python中time模块与datetime模块的详解

Python怎么安装plotly

Python string、 bytes、 bytearray类型详解

Python文本统计功能之西游记用字统计操作

Python中的tornado之helloworld的实现代码

Python 装饰器详解

Python线程下使用锁该注意的地方

pandas妙招之 dataframe基础运算以及空值填充

Python一般用什么软件

更多相关阅读请进入《Python》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...