python - numpy - 排列 : Why does following example not end at 10

标签 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  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/

相关文章:

python - 在 DataFrame 中创建新行的最有效方法

python - 带有 Multiindex 的 Pandas 点积

python - 在Python中写入文件时如何跳过文本 block

python - Numpy 值作为 Pandas 数据框中的新列

python - 在三个数组中找到最近的三个 x,y 点

numpy - 使用 2D 整数数组索引 3D 数组的最后一个维度

python - 机器学习的数据分离

python - Pandas :如何为数据集中的所有项目创建userByItem数据透视表

python - Tensorflow 对象检测 API,具有不同结果的教程

python - 提取每个音频文件的频谱图