numpy(二)piecewise

发布时间 2023-09-26 21:40:05作者: 西伯尔

1、关于值域和定义域的坑
【坑了我一下午,怎么都不对,直到和朋友探讨,才一点点排除问题,真挺坑的。
实际上还是自己对于函数的 值域 定义域的注意不够。】

(1)定义域是int时,值域是int,输出中带的小数会被舍弃(不是四舍五入、而是直接抹掉)

错误使用:

# 注意!piecewise的输出(值域)类型按照定义域R的类型,如果R的类型是int,那么,即使输出是【[0.28, lambda R: R + 0.03]】,也会舍弃小数,输出int类型!
import numpy as np  
x = 3
Y1 = np.piecewise(x, [x < 3.01, x >= 3.01], [2.7, lambda x:x+3.78])  
print(Y1)
# 结果:2

正确使用:

import numpy as np  
x = 3.00
Y1 = np.piecewise(x, [x < 3.01, x >= 3.01], [2.7, lambda x:x+3.78])  
print(Y1)

# 结果:2.7

(2)延伸:当定义域是int时,条件可以是float、不会强转为int再判断,结果不会受影响

参考:
https://numpy.org/doc/stable/reference/generated/numpy.piecewise.html