Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.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平均值函数舍入误差_Python_Numpy_Average - Fatal编程技术网

Python Numpy平均值函数舍入误差

Python Numpy平均值函数舍入误差,python,numpy,average,Python,Numpy,Average,我觉得这很奇怪。有人能告诉我这是怎么回事吗 >>>a = [1,0,1] >>>np.mean(a) 0.66666666666666663 >>>2.0/3 0.6666666666666666 np.mean(a)输出末尾的3是怎么回事?为什么它不像下面的那一行那样是6或7(四舍五入时)?这只是两种不同类型的不同字符串表示的一种情况: In [17]: a = [1, 0, 1] In [18]: mean(a) Out[

我觉得这很奇怪。有人能告诉我这是怎么回事吗

>>>a = [1,0,1]
>>>np.mean(a)
   0.66666666666666663
>>>2.0/3
   0.6666666666666666

np.mean(a)
输出末尾的3是怎么回事?为什么它不像下面的那一行那样是6或7(四舍五入时)?

这只是两种不同类型的不同字符串表示的一种情况:

In [17]: a = [1, 0, 1]

In [18]: mean(a)
Out[18]: 0.66666666666666663

In [19]: type(mean(a))
Out[19]: numpy.float64

In [20]: 2.0 / 3
Out[20]: 0.6666666666666666

In [21]: type(2.0 / 3)
Out[21]: float

In [22]: mean(a).item()
Out[22]: 0.6666666666666666
他们比较平等:

In [24]: mean(a) == 2.0 / 3
Out[24]: True

In [25]: mean(a).item() == 2.0 / 3
Out[25]: True

现在可能是阅读和的时候了。

为什么会有反对票?至少解释一下。这是完全合理的…除非你真的没有读过这个问题…@Brian这个问题在这个论坛上已经被回答了很多次了。@Ophion所以投反对票,评论说这是个骗局,并链接到一个。当被愚弄者没有出现在搜索或相关列表中时,为什么人们要“点击并运行”投票否决一个新用户?@Brain你必须问他们,但这是一个谷歌很容易回答的问题,它本质上是对SO问题的检查。@Ophion:这不是标准的
OMG,0.1+0.2=0.3000004
您每天会看到三次,这似乎是一个让我吃惊的有效问题。python浮点值也应该是64位的,但numpy的打印方式仍然有点奇怪。@BasSwinckels不确定我是否理解您的论点。你是说,因为它们都是浮点类型,具有64位表示,所以它们应该
repr
相同,即使它们在类型层次结构中是不同的类型?我知道它们是不同的类型,具有不同的repr,但都应该包装相同的float64值。在这种情况下,似乎没有努力让repr显示它真正的类型,所以我只是觉得有点奇怪,他们没有使用相同的算法来创建字符串表示。我猜这已经在NumPy ML上讨论过了。我真的没有时间研究它,但我敢打赌你会在那里找到更多的信息。