Python numpy-arange:为什么下面的例子不以10结尾

Python numpy-arange:为什么下面的例子不以10结尾,python,numpy,Python,Numpy,我是Python初学者。正在尝试动手学习numpy import numpy as np x = np.arange(0.5, 10.4, 0.8, int) 它输出: [ 0 1 2 3 4 5 6 7 8 9 10 11 12 ] 我希望它能回来(因为最后一项是10.4): 除此之外,如果我执行此操作(理解此示例): 它打印: [ 0.5 1.3 2.1 2.9 3.7 4.5 5.3 6.1 6.9 7.7 8.5 9.3 10.1 ] 这

我是Python初学者。正在尝试动手学习numpy

import numpy as np
x = np.arange(0.5, 10.4, 0.8, int)
它输出:

[ 0  1  2  3  4  5  6  7  8  9 10 11 12 ]
我希望它能回来(因为最后一项是10.4):

除此之外,如果我执行此操作(理解此示例):

它打印:

[  0.5  1.3  2.1  2.9  3.7  4.5  5.3  6.1  6.9  7.7  8.5  9.3  10.1 ]

这是一种非常奇怪的调用
arange
的方式。这种行为没有记录在案,我认为没有经过多少思考。以下是基于的情况,至少在当前版本中是这样

使用您传递的原始参数0.5、10.4和0.8,NumPy使用helper函数计算结果和第二个元素的长度。这些计算是在Python对象算法中完成的,长度转换为
npy\u intp
整数。在您的例子中,长度计算为13

然后,NumPy分配一个请求数据类型和计算长度的数组,并将前两个元素存储在数组中。在存储元素时,它们将进行通常的NumPy数据类型转换。在您的例子中,前两个元素被强制为0和1


最后,NumPy调用新数组的函数,用前两个元素计算的值填充数组。
fill
函数从前两个元素重新计算步长,因此它计算步长为1,并用0到12的整数填充数组。

np.arange(0.5,10.4,0.8,int)
np.arange(0.5,10.4,0.8)
具有相同的元素量,因此在不知道答案的情况下,我猜,不知何故,元素的数量是先确定的,然后步骤变成一个整数…np.arange(0.5,10.5,0.4,int)的结果更好:
数组([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),0,0,0),0,
这项工作原理是:x=list(map(int,np.arange)(0.5,10.4,0.8))。此行为甚至在中提到(尽管不是很明确):当使用非整数步长(如0.1)时,结果通常不一致。对于这些情况,最好使用
linspace
。这是一个相当详细的答案,我不希望有这么多好的解释。我将尝试耐心地理解它,以便从源代码完全掌握。竖起大拇指!
x = np.arange(0.5, 10.4, 0.8)
print(x)
[  0.5  1.3  2.1  2.9  3.7  4.5  5.3  6.1  6.9  7.7  8.5  9.3  10.1 ]