首页 > 解决方案 > 检查数组是否是更大数组的一部分

问题描述

我正在尝试检查一维 numpy 数组是否是更大的二维数组的一部分。我可以用很多 for 循环来做到这一点,但我想有一种更 Pythonic 的方式来做到这一点。

我必须做的尝试:

1darray = np.array([0,0,0])
2darray = np.array([[0,0,1],[0,1,0],[1,0,0]]) 
1darray in 2darray 

但是此代码返回True ,只要 1darray 中的元素之一出现在 2darray 中的某个位置。但我想检查整个数组是否是较大数组中的一行,所以我希望这段代码返回False,而我希望这段代码返回True

1darray = np.array([0,0,1])
2darray = np.array([[0,0,1],[0,1,0],[1,0,0]]) 
1darray in 2darray 

我将不胜感激任何帮助,谢谢!

标签: pythonnumpy

解决方案


您可以使用any()all()函数来实现这一点。

>>> a=np.array([0,0,0])
>>> b=np.array([[0,0,1],[0,1,0],[1,0,0]])
>>> (a == b).all(axis=1).any()
False

>>> a=np.array([0,0,1])
>>> b=np.array([[0,0,1],[0,1,0],[1,0,0]])
>>> (a == b).all(axis=1).any()
True

推荐阅读