Numpy数组精度,如何克服搜索另一个数组

时间:2012-03-01 21:00:04

标签: numpy sum

我有一个numpy程序,我需要从数组A的总和中找到数组B中值的索引 - 遗憾的是numpy数组的精确问题给我带来了一个问题:(

  

A =数组([0.1,0.1,0.1,0.1,0.1])
    B =数组([0.1,0.2,0.3,0.4,0.5])

     

乙== 0.3
    array([False,False,True,False,False],dtype = bool)

     

乙==总和(A [:3])
    array([False,False,False,False,False],dtype = bool)

     

乙==总和(A [:2])
    array([False,True,False,False,False],dtype = bool)

     

和(A [:2])
    0.20000000000000001

     

和(A [:2])
    0.30000000000000004

如何确保在数组B中找到数组A ??

的精确总和

祝你好运 TERMO

1 个答案:

答案 0 :(得分:1)

您只是看到浮点运算的影响。 (如果使用python列表而不是numpy数组,情况也是如此。)

我实际上很惊讶,没有一个内置函数可以在numpy中进行浮点“近距离”比较......有numpy.allclose用来比较两个numpy数组,但它只是返回<{1}}或True而不是布尔数组。

一般来说这样做实际上有点棘手。 False会引发误报和漏报。此外,在其中减去两个带有infinf的数组会引发警告,因此我们通常希望避免这样做......

nan