Numpy linspace 不均匀分布

ash*_*thy 5 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.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]
Run Code Online (Sandbox Code Playgroud)

但后来我发现端点不是其中的一部分,所以我想到使用 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.        ]
Run Code Online (Sandbox Code Playgroud)

我不明白为什么这不是均匀分布的,因为 0.02040816+0.02040816=0.04081632 但在序列中,它显示 0.04081633,请有人解释。为了获得像排列一样的输出,我使用了 np.around

Sus*_*hil 5

正如 HansHirse 提到的,它应该是np.linspace(0,1,51),因为np.linspace不包括最后一个数字。

如果您想使用 获得相同的结果np.arange,那么只需使用np.arange(0,1.02,0.02). 只需将最后一个数字添加到第二个数字中,np.arange这样您期望打印的最后一个数字也会被打印出来。

希望这有帮助!