Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.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 为什么在for循环中迭代时的值与打印整个数组时的值不同?_Python_Numpy - Fatal编程技术网

Python 为什么在for循环中迭代时的值与打印整个数组时的值不同?

Python 为什么在for循环中迭代时的值与打印整个数组时的值不同?,python,numpy,Python,Numpy,在Python中,使用numpy时,在迭代过程中打印值或打印整个数组时,值会发生变化,为什么,如何解决这个问题?我希望它们是例如0.8而不是0.79999999 >>> import numpy as np >>> b = np.arange(0.5,2,0.1) >>> for value in b: ... print(value) ... 0.5 0.6 0.7 0.7999999999999999 0.89999999999

在Python中,使用numpy时,在迭代过程中打印值或打印整个数组时,值会发生变化,为什么,如何解决这个问题?我希望它们是例如0.8而不是0.79999999

>>> import numpy as np
>>> b = np.arange(0.5,2,0.1)
>>> for value in b:
...     print(value)
... 
0.5
0.6
0.7
0.7999999999999999
0.8999999999999999
0.9999999999999999
1.0999999999999999
1.1999999999999997
1.2999999999999998
1.4
1.4999999999999998
1.5999999999999996
1.6999999999999997
1.7999999999999998
1.8999999999999997
>>> print(b)
[0.5 0.6 0.7 0.8 0.9 1.  1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9]
>>> 

之所以会出现这种情况,是因为Python和NumPy在某些数字(如0.1)无法精确表示的情况下使用。 也检查一下

您可以使用Numpy的np.around实现以下目的:

>>b=np.aroundb,1第一个参数是np数组,第二个参数是小数点的数量 >>对于b中的值: 打印值 0.5 0.6 0.7 0.8 0.9 1 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9
您可以使用round来获得整数

for value in b:
       print(round(value,2))

要打印,可以使用打印格式-%.1f

>>>对于b中的值: ... 打印%.1f%值 ... 0.5 0.6 0.7 0.8 0.9 1 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9
我认为,ndarray的方法uu str_uu_u_u_u_uu_u_u)就是这样实现的。当你使用

版图 调用函数_str_uu是为了可读性。在这次通话中,您在Ndaray上进行操作。当您在for循环中进行打印时,使用float number的_str__;按原样打印数字

希望这是清楚的,但实际上可以有所帮助


这只是数字在列表中的显示方式以及它们各自的近似值,一旦添加到列表中,我认为您担心的是您会失去精度。