首页 > 解决方案 > 检查多维numpy数组中两个轴的相等性

问题描述

我得到一个 3 维 shape(n,m,k) numpy 数组。我想将此视为包含向量的二维矩阵,即具有大小为 k 的向量的 nxm 矩阵。我现在想检查两个形状为 (n,m,k) 的数组,第一个数组中的条目 (x,y,:) 是否等于第二个数组中的 (x,y,:)。有没有一种方法可以在不使用循环的情况下在 numpy 中执行此操作?

我曾考虑过以第一轴和第二轴为条件的 A == B 之类的东西。

标签: pythonarraysnumpy

解决方案


您可以使用条件,并ndarray.allaxis

a = np.arange(27).reshape(3,3,3)
b = np.zeros_like(a)
b[0,1,2] = a[0,1,2]
b[1,2,0] = a[1,2,0]
b[2,1,:] = a[2,1,:] # set to the same 3-vector at n=2, m=1

(a == b).all(axis=2) # check whether all elements of last axis are equal
# array([[False, False, False],
#        [False, False, False],
#        [False,  True, False]])

如您所见,对于n=2和我们在和m=1中得到相同的 3 向量。ab


推荐阅读