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.0
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再判断,结果不会受影响
如果受影响,结果应为6,此处为2,故没问题。
参考:
https://numpy.org/doc/stable/reference/generated/numpy.piecewise.html