我是python的新手,我试过这个:
import numpy as np
x = np.arange(0.7,1.3,0.1)
print (x)
y = np.arange(0.6,1.3,0.1)
print (y)
输出为[ 0.7 0.8 0.9 1. 1.1 1.2 1.3]
和[ 0.6 0.7 0.8 0.9 1. 1.1 1.2]
。为什么在第一种情况下1.3出现在列表中,而在第二种情况下它不出现?
答案 0 :(得分:6)
这是由于rounding errors。如果您实际打印x
中的最后一个元素的完全精度,您会看到它小于1.3
:
>>> import numpy as np
>>> x = np.arange(0.7,1.3,0.1)
>>> 1.3 > x[-1]
True
>>> x[-1]
1.2999999999999998
注意,如documentation
中所述使用非整数步骤(例如0.1)时,结果通常不一致。最好在这些情况下使用
linspace
。:
答案 1 :(得分:4)
arange
不适合浮点数:
使用非整数步骤(例如0.1)时,结果通常不一致。对于这些情况,最好use linspace。
我不熟悉numpy的内部结构,但我的猜测是这是浮点数不精确的副作用(意味着它们不能完全代表某些值)。
答案 2 :(得分:1)
请参阅numpy.arange文档here:
具体而言#34;当使用非整数步骤(例如0.1)时,结果通常不一致。最好在这些情况下使用
linspace
"