我想生成0到1之间等间距的50个数字
首先,我尝试使用numpy.arange(0,1,0.02),下面是我得到的输出。
[0. 0.02 0.04 0.06 0.08 0.1 0.12 0.14 0.16 0.18 0.2 0.22 0.24 0.26
0.28 0.3 0.32 0.34 0.36 0.38 0.4 0.42 0.44 0.46 0.48 0.5 0.52 0.54
0.56 0.58 0.6 0.62 0.64 0.66 0.68 0.7 0.72 0.74 0.76 0.78 0.8 0.82
0.84 0.86 0.88 0.9 0.92 0.94 0.96 0.98]但是后来我发现端点不在其中,所以我考虑使用linspace time = np.linspace(0,1,50),输出是
[0. 0.02040816 0.04081633 0.06122449 0.08163265 0.10204082
0.12244898 0.14285714 0.16326531 0.18367347 0.20408163 0.2244898
0.24489796 0.26530612 0.28571429 0.30612245 0.32653061 0.34693878
0.36734694 0.3877551 0.40816327 0.42857143 0.44897959 0.46938776
0.48979592 0.51020408 0.53061224 0.55102041 0.57142857 0.59183673
0.6122449 0.63265306 0.65306122 0.67346939 0.69387755 0.71428571
0.73469388 0.75510204 0.7755102 0.79591837 0.81632653 0.83673469
0.85714286 0.87755102 0.89795918 0.91836735 0.93877551 0.95918367
0.97959184 1. ]我不明白为什么这个不是均匀分布的,因为0.02040816+0.02040816=0.04081632,但是在序列中,它显示了0.04081633,谁来解释一下。为了获得像arrange这样的输出,我使用了np.around
发布于 2020-10-02 15:46:19
正如HansHirse提到的,它应该是np.linspace(0,1,51),因为np.linspace不包括最后一个数字。
如果您想使用np.arange获得相同的结果,那么只需使用np.arange(0,1.02,0.02)即可。只需将最后一个数字与np.arange中的第二个数字相加,这样您期望打印的最后一个数字也会打印出来。
希望这能对你有所帮助!
发布于 2020-10-02 15:54:00
在0到1 np.linspace(0,1,50)之间均匀分布50个数字是完全正确的!
如果你想得到与np.arange(0,1,0.02)相同的结果,你可以使用np.linspace(0,0.98,50),因为arange函数也会在0.98时停止。
numpy.linspace(0,0.98,50)
array([0. , 0.02, 0.04, 0.06, 0.08, 0.1 , 0.12, 0.14, 0.16, 0.18, 0.2 ,
0.22, 0.24, 0.26, 0.28, 0.3 , 0.32, 0.34, 0.36, 0.38, 0.4 , 0.42,
0.44, 0.46, 0.48, 0.5 , 0.52, 0.54, 0.56, 0.58, 0.6 , 0.62, 0.64,
0.66, 0.68, 0.7 , 0.72, 0.74, 0.76, 0.78, 0.8 , 0.82, 0.84, 0.86,
0.88, 0.9 , 0.92, 0.94, 0.96, 0.98])https://stackoverflow.com/questions/64167762
复制相似问题