假设我想生成一个介于 0 和 1 之间、间距为 0.1 的数组。在R中,我们可以做
> seq(0, 1, 0.1)
[1] 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0
Run Code Online (Sandbox Code Playgroud)
在Python中,由于numpy.arange
不包括右端,我需要向stop
.
np.arange(0, 1.01, 0.1)
array([0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1. ])
Run Code Online (Sandbox Code Playgroud)
但这似乎有点奇怪。是否可以强制numpy.arange
包含右端?或者也许其他一些功能可以做到这一点?
您应该非常小心地使用arange
浮点步骤。
来自文档:
当使用非整数步长(例如 0.1)时,结果通常会不一致。对于这些情况,最好使用 numpy.linspace。
相反,请使用linspace
,它允许您指定返回值的确切数量。
>>> np.linspace(0, 1, 11)
array([0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1. ])
Run Code Online (Sandbox Code Playgroud)
linspace
实际上也可以让您指定是否包含端点(True
默认情况下):
>>> np.linspace(0, 1, 11, endpoint=True)
array([0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1. ])
>>> np.linspace(0, 1, 11, endpoint=False)
array([0. , 0.09090909, 0.18181818, 0.27272727, 0.36363636,
0.45454545, 0.54545455, 0.63636364, 0.72727273, 0.81818182,
0.90909091])
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1676 次 |
最近记录: |