为什么np.linspace(1,5,5,dtype=int,endpoint=False)的结果会包含两次1的数组?

2024-04-25 16:38:20 发布

您现在位置:Python中文网/ 问答频道 /正文

在寻找复制时:

In [61]: np.arange(0,5)
Out[61]: array([0, 1, 2, 3, 4])

使用np.linspace(),我观察到:

In [70]: np.linspace(1,5,5, dtype = int, endpoint=False)
Out[70]: array([1, 1, 2, 3, 4])

为什么在这种情况下np.linspace()要包含两次值1


Tags: infalsenp情况outarrayendpointint
2条回答

因为linspace是在float上定义的,在您的情况下会返回:

np.linspace(1,5,5, endpoint=False)
array([ 1. ,  1.8,  2.6,  3.4,  4.2])

然后使用int作为dtype向下舍入,得到两个1结果:

array([ 1 ,  1,  2,  3,  4])

顺便说一句:如果您想创建包含integerarrays,那么使用np.arange可能更合适:

np.arange(1,5)
array([ 1,  2,  3,  4])

我不能测试,因为数据类型是在1.9中引入的,我有1.8。没有数据类型,我得到:

np.linspace(1,5,5, endpoint=False)
array([ 1. ,  1.8,  2.6,  3.4,  4.2])

那么

array([1, 1, 2, 3, 4])

是这个的一个缩影。

你会得到你想要的

np.linspace(1,5,5, dtype=int)

但正如另一个答案所建议的,最好使用np.arange()。

相关问题 更多 >