我有一个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
答案 0 :(得分:1)
您只是看到浮点运算的影响。 (如果使用python列表而不是numpy数组,情况也是如此。)
我实际上很惊讶,没有一个内置函数可以在numpy中进行浮点“近距离”比较......有numpy.allclose
用来比较两个numpy数组,但它只是返回<{1}}或True
而不是布尔数组。
一般来说这样做实际上有点棘手。 False
会引发误报和漏报。此外,在其中减去两个带有inf
或inf
的数组会引发警告,因此我们通常希望避免这样做......
nan