Python 3.x 将numpy.arange()转换为list后更改的值
在spyder3(python3.7)中将numpy.arange数组转换为列表时,值会发生变化 例如,我用Python 3.x 将numpy.arange()转换为list后更改的值,python-3.x,numpy,Python 3.x,Numpy,在spyder3(python3.7)中将numpy.arange数组转换为列表时,值会发生变化 例如,我用np.arange(0.4,2,0.3)创建了一个数组,输出如下,这是正常的: Out[233]: array([0.4, 0.7, 1. , 1.3, 1.6, 1.9]) 但是当用列表(np.arange(0.4,2,0.3))转换它时,输出变成: Out[234]: [0.4, 0.7, 0.9999999999999999, 1.2999999999999998, 1
np.arange(0.4,2,0.3)
创建了一个数组,输出如下,这是正常的:
Out[233]: array([0.4, 0.7, 1. , 1.3, 1.6, 1.9])
但是当用列表(np.arange(0.4,2,0.3))
转换它时,输出变成:
Out[234]:
[0.4,
0.7,
0.9999999999999999,
1.2999999999999998,
1.5999999999999996,
1.8999999999999995]
那有什么问题?这是一个bug还是什么?这是预期的行为。从文档中: 使用非整数步长(如0.1)时,结果通常不一致。对于这些情况,最好使用numpy.linspace
谢谢这让我困惑了一段时间。但即使使用
linspace
也可以得到1.6
这样的值,根据上下文显示为1.59999…
。numpy
显示四舍五入到合理公共级别的数组元素。列表独立显示每个元素。值没有改变,只是显示而已。