我是 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 1 2 3 4 5 6 7 8 9 10 ]
除了上面,如果我执行这个(理解这个例子):
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 ]
最佳答案
这是调用arange
的一种非常奇怪的方式。这种行为没有记录在案,我认为没有考虑太多。这是基于 source 的情况,至少在当前版本中是这样。 .
使用您传递的原始参数 0.5、10.4 和 0.8,NumPy 使用 _calc_length
计算结果和第二个元素的长度辅助功能。这些计算是在 Python 对象算法中完成的,长度被转换为一个 npy_intp
整数。在您的例子中,长度计算为 13。
NumPy 然后分配请求数据类型和计算长度的数组,并将前两个元素存储在数组中。在存储元素时,它们会进行通常的 NumPy dtype 转换。在您的例子中,前两个元素被强制为 0 和 1。
最后,NumPy 调用新数组的 fill
函数用从前两个元素计算的值填充数组。 fill
函数从前两个元素重新计算步长,因此它计算步长 1 并用 0 到 12 之间的整数填充数组。
关于python - numpy - 排列 : Why does following example not end at 10,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44897873/