今天在用numpy写sinc函数时偶然发现在x=0时函数居然能取到1,觉得很不可思议,按理来说在x=0时函数无意义,研究了一下,发现竟然时numpy在生成数组时自动用一个很小的数代替了0。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
In[ 2 ]: import numpy as np In[ 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的非常小的数代替了。
以上这篇浅谈numpy生成数组的零值问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/u014528556/article/details/70187490