在 numpy 中,您可以使用 allclose(X, Y)
函数逐个检查两个数组之间的近似相等性。此外,使用像 X==5
这样的表达式,您可以检查数组和标量之间的逐元素相等性。
是否有结合这两种功能的功能?也就是说,可以比较数组和标量以获得近似元素相等性吗?
最佳答案
numpy 文档中的术语 array 或 array-like 主要表示输入被转换为数组 np.asarray(in_arg)
或 np.asanyarray(in_arg)
。因此,如果您输入一个标量,它将被转换为一个标量数组:
>>> import numpy as np
>>> np.asarray(5) # or np.asanyarray
array(5)
而函数 np.allclose
或 np.isclose
只是进行逐元素比较,无论第二个参数是标量数组,还是具有相同形状的数组或正确广播到第一个数组的数组:
>>> import numpy as np
>>> arr = np.array([1,2,1,0,1.00001,0.9999999])
>>> np.allclose(arr, 1)
False
>>> np.isclose(arr, 1)
array([ True, False, True, False, True, True], dtype=bool)
>>> np.isclose(arr, np.ones((10, 6)))
array([[ True, False, True, False, True, True],
[ True, False, True, False, True, True],
[ True, False, True, False, True, True],
[ True, False, True, False, True, True],
[ True, False, True, False, True, True],
[ True, False, True, False, True, True],
[ True, False, True, False, True, True],
[ True, False, True, False, True, True],
[ True, False, True, False, True, True],
[ True, False, True, False, True, True]], dtype=bool)
因此无需寻找另一个明确处理标量的函数,这些函数已经正确地处理标量。
关于python - numpy:有 `allclose(np.array, scalar)` 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41363751/