Python最后一个元素列表

时间:2016-08-30 19:04:33

标签: python

我是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出现在列表中,而在第二种情况下它不出现?

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"