Python 给定范围内的2D NumPy数组比较

Python 给定范围内的2D NumPy数组比较,python,arrays,numpy,comparison,Python,Arrays,Numpy,Comparison,如果我有一个二维数字数组,我想看看数组中的每个值是否在另一个二维数组的某个范围内,那么如何使用NumPy高效地执行该操作 [[1,2,1],[2,3,2],[2,3,4],[1,2,3],[1,3,2]] is in range 1 with [[1,2,1],[2,3,2],[2,3,4],[1,2,3],[1,3,2]] => TRUE [[1,2,1],[2,3,2],[2,3,4],[1,2,3],[1,3,2]] is in range 1 with [[0,3,0],[1,4

如果我有一个二维数字数组,我想看看数组中的每个值是否在另一个二维数组的某个范围内,那么如何使用NumPy高效地执行该操作

[[1,2,1],[2,3,2],[2,3,4],[1,2,3],[1,3,2]] is in range 1 with
[[1,2,1],[2,3,2],[2,3,4],[1,2,3],[1,3,2]] => TRUE

[[1,2,1],[2,3,2],[2,3,4],[1,2,3],[1,3,2]] is in range 1 with
[[0,3,0],[1,4,3],[1,4,5],[0,3,4],[0,4,3]] => TRUE

[[1,2,1],[2,3,2],[2,3,4],[1,2,3],[1,3,2]] is in range 1 with
[[0,4,0],[1,4,3],[1,4,5],[0,3,4],[0,4,3]] => FALSE

最后一个是错误的,因为索引0.1上的项的on是4,这意味着abs(2-4)>1

您可以使用numpy的矢量化算法和
all
轻松做到这一点。例如:

>>> a = np.array([[1,2,1],[2,3,2],[2,3,4],[1,2,3],[1,3,2]])
>>> b = np.array([[1,2,1],[2,3,2],[2,3,4],[1,2,3],[1,3,2]])
>>> abs(a-b)
array([[0, 0, 0],
       [0, 0, 0],
       [0, 0, 0],
       [0, 0, 0],
       [0, 0, 0]])
>>> abs(a-b) <= 1
array([[ True,  True,  True],
       [ True,  True,  True],
       [ True,  True,  True],
       [ True,  True,  True],
       [ True,  True,  True]], dtype=bool)
>>> (abs(a-b) <= 1).all()
True
a=np.数组([[1,2,1],[2,3,2],[2,3,4],[1,2,3],[1,3,2]) >>>b=np.数组([[1,2,1],[2,3,2],[2,3,4],[1,2,3],[1,3,2]) >>>abs(a-b) 数组([[0,0,0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]) >>>abs(a-b)>>(abs(a-b)>>a2=np.数组([[1,2,1],[2,3,2],[2,3,4],[1,2,3],[1,3,2]) >>>b2=np.数组([[0,4,0],[1,4,3],[1,4,5],[0,3,4],[0,4,3])
>>>abs(a2-b2)>>(abs(a2-b2)您可以使用numpy的矢量化算法和
all
轻松实现这一点。例如:

>>> a = np.array([[1,2,1],[2,3,2],[2,3,4],[1,2,3],[1,3,2]])
>>> b = np.array([[1,2,1],[2,3,2],[2,3,4],[1,2,3],[1,3,2]])
>>> abs(a-b)
array([[0, 0, 0],
       [0, 0, 0],
       [0, 0, 0],
       [0, 0, 0],
       [0, 0, 0]])
>>> abs(a-b) <= 1
array([[ True,  True,  True],
       [ True,  True,  True],
       [ True,  True,  True],
       [ True,  True,  True],
       [ True,  True,  True]], dtype=bool)
>>> (abs(a-b) <= 1).all()
True
a=np.数组([[1,2,1],[2,3,2],[2,3,4],[1,2,3],[1,3,2]) >>>b=np.数组([[1,2,1],[2,3,2],[2,3,4],[1,2,3],[1,3,2]) >>>abs(a-b) 数组([[0,0,0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]) >>>abs(a-b)>>(abs(a-b)>>a2=np.数组([[1,2,1],[2,3,2],[2,3,4],[1,2,3],[1,3,2]) >>>b2=np.数组([[0,4,0],[1,4,3],[1,4,5],[0,3,4],[0,4,3]) >>>abs(a2-b2)>>(abs(a2-b2)