Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在numpy arange上迭代会更改值_Python_Numpy - Fatal编程技术网

Python 在numpy arange上迭代会更改值

Python 在numpy arange上迭代会更改值,python,numpy,Python,Numpy,我用的是numpy arange [In]测试=np.arange(0.01,0.2,0.02) [In]测试 [Out]阵列([0.01,0.03,0.05,0.07,0.09,0.11,0.13,0.15,0.17,0.19]) 但是,如果我迭代这个数组,它会迭代更小的值 [In]对于t In测试: .... 打印(t) [外] 0.01 0.03 0.049999999999999996 0.06999999999999999 0.08999999999999998 0.1099

我用的是numpy arange

[In]测试=np.arange(0.01,0.2,0.02)
[In]测试
[Out]阵列([0.01,0.03,0.05,0.07,0.09,0.11,0.13,0.15,0.17,0.19])
但是,如果我迭代这个数组,它会迭代更小的值

[In]对于t In测试:
....     打印(t)
[外]
0.01
0.03
0.049999999999999996
0.06999999999999999
0.08999999999999998
0.10999999999999997
0.12999999999999998
0.15
0.16999999999999998
0.18999999999999997
为什么会这样

为了避免这个问题,我一直在舍入这些值,但这是解决这个问题的最佳方法吗

for t in test:
    print(round(t, 2))
您是否尝试过:

test = np.arange(0.01, 0.2, 0.02, dtype=np.float32)

我认为评论中提到的浮点数的性质就是问题所在

如果你仍然认为你害怕这样做,我建议你将你的数字乘以100,然后使用整数:

test=np.arange(1,20,2)
打印(测试)
对于测试中的t:
打印(t/100)
这为我提供了以下输出:

[ 1  3  5  7  9 11 13 15 17 19]
0.01
0.03
0.05
0.07
0.09
0.11
0.13
0.15
0.17
0.19
或者,您也可以尝试以下操作:

test=np.arange(1,20,2)/100

也许这个答案可以帮助您: