Python Numpy linspace间距不均匀
我要生成0到1之间的50个等距数字 首先,我尝试使用numpy.arange(0,1,0.02),下面是我得到的输出Python Numpy linspace间距不均匀,python,numpy,Python,Numpy,我要生成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.7
[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
时间=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.0204816+0.0204816=0.04081632,但在序列中,它显示0.04081633,请解释一下。
为了获得像arrange这样的输出,我使用了np.around,正如HansHirse提到的,它应该是
np.linspace(0,1,51)
,因为np.linspace
不包括最后一个数字
如果您想使用np.arange
获得相同的结果,只需使用np.arange(0,1.02,0.02)
。只需将最后一个数字添加到np.arange
中的第二个数字,您希望打印的最后一个数字也会被打印出来
希望这有帮助 正如HansHirse所提到的,它应该是
np.linspace(0,1,51)
,因为np.linspace
不包括最后一个数字
如果您想使用np.arange
获得相同的结果,只需使用np.arange(0,1.02,0.02)
。只需将最后一个数字添加到np.arange
中的第二个数字,您希望打印的最后一个数字也会被打印出来
希望这有帮助 实现0到1之间50个均匀间隔的数字
np。linspace(0,1,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])
要在0到1之间获得50个均匀间隔的数字,linspace(0,1,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])
np.linspace(0,1,51)
!?如果您使用np.diff(np.linspace(0,1,50))
进行检查,您将看到它的空间是均匀的,HansHirse和Nils-Werner很多,因此在linspace中,数字点应该是数字点+1,以包括终点!在可以计算值的地方尝试更小的方法,例如linspace(0,1,11)
(或10)np.linspace(0,1,51)
!?如果您使用np.diff(np.linspace(0,1,50))
进行检查,您将看到它的空间是均匀的,HansHirse和Nils-Werner很多,因此在linspace中,数字点应该是数字点+1,以包括终点!尝试一些较小的方法,可以计算值,例如linspace(0,1,11)
(或10),但我希望包含端点1,因此我用linspace替换了arange,但我希望包含端点1,因此我用linspace替换了arange