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面试常见问题有哪些

Python中if 条件判断代码解析

如何利用Python函数求导数

Python中map是什么意思

Python 中的int()函数怎么用

Python扩展内置类型的实现方法分析

Python是开源的吗

Python中idle是什么

Python中socket网络编程的详细介绍(附示例)

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




打赏

取消

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

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

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

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

评论

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