numpy生成数组的零值问题

来源:互联网 发布:如何启动mysql服务 编辑:程序博客网 时间:2024/05/16 08:42
今天在用numpy写sinc函数时偶然发现在x=0时函数居然能取到1,觉得很不可思议,按理来说在x=0时函数无意义,研究了一下,发现竟然时numpy在生成数组时自动用一个很小的数代替了0。
In[2]: import numpy as npIn[3]: np.arange(-1, 1, 0.1)Out[3]: array([ -1.00000000e+00,  -9.00000000e-01,  -8.00000000e-01,        -7.00000000e-01,  -6.00000000e-01,  -5.00000000e-01,        -4.00000000e-01,  -3.00000000e-01,  -2.00000000e-01,        -1.00000000e-01,  -2.22044605e-16,   1.00000000e-01,         2.00000000e-01,   3.00000000e-01,   4.00000000e-01,         5.00000000e-01,   6.00000000e-01,   7.00000000e-01,         8.00000000e-01,   9.00000000e-01])In[4]: np.linspace(-1, 0.9, 20)Out[4]: array([ -1.00000000e+00,  -9.00000000e-01,  -8.00000000e-01,        -7.00000000e-01,  -6.00000000e-01,  -5.00000000e-01,        -4.00000000e-01,  -3.00000000e-01,  -2.00000000e-01,        -1.00000000e-01,  -1.11022302e-16,   1.00000000e-01,         2.00000000e-01,   3.00000000e-01,   4.00000000e-01,         5.00000000e-01,   6.00000000e-01,   7.00000000e-01,         8.00000000e-01,   9.00000000e-01])
其中arange和linspace两个函数在本应该为0的地方用一个e-16的非常小的数代替了。
0 0