我试图在 ndarray 中找到一个浮点数。由于我使用的软件包(Abaqus),它输出的精度有点低。例如,10 类似于 10.00003。因此,我想知道是否有一种“正确”的方法来做到这一点,它比我的代码更整洁。
示例代码:
import numpy as np
array = np.arange(10)
number = 5.00001
如果我这样做:</p>
idx = np.where(number==array)[0][0]
然后结果为空,因为 5.00001 不等于 5。
现在我在做:
atol = 1e-3 # Absolute tolerance
idx = np.where(abs(number-array) < atol)[0][0]
哪个有效,并且不太混乱......但我想知道会有一种更简洁的方法来做到这一点。谢谢!
PS:numpy.allclose()
是另一种方法,但我需要使用number * np.ones([array.shape[0], array.shape[1]])
它对我来说仍然很冗长......
编辑:非常感谢大家的精彩回答!np.isclose() 是我正在寻找的确切功能,我错过了它,因为它不在文档中......如果不是你们,我不会在他们更新文档之前意识到这一点。再次感谢你!