如何无循环实现Numpy全数组与子数组的存在性判断?
无循环实现Numpy数组元素匹配布尔数组生成
可以直接用Numpy内置的矢量化函数实现,完全不需要循环,推荐两种方法:
- 使用
np.isin()(通用型,支持多维数组) - 使用
np.in1d()(一维专用版本)
代码示例
import numpy as np FullArray = np.array([0,1,2,3,4,5,6,7,8,9]) SubArray = np.array([8, 3, 5]) # 方法1:推荐的通用实现 BoolArray = np.isin(FullArray, SubArray) # 方法2:一维数组专用实现 # BoolArray = np.in1d(FullArray, SubArray) print(BoolArray) # 输出结果:[False False False True False True False False True False]
这两个函数都是底层基于矢量化运算实现,比手动循环效率高得多,尤其是处理大规模数组时优势显著。np.isin()的适用场景更广泛,能处理多维数组的元素匹配需求;np.in1d()则是专门针对一维数组做了优化,两者在一维场景下的输出完全一致。
内容的提问来源于stack exchange,提问作者Rhecsu
相关产品推荐
相关产品推荐

