Python 如何有效地检查numpy数组a是否包含b

Python 如何有效地检查numpy数组a是否包含b,python,numpy,Python,Numpy,如何有效地检查一个numpy数组a是否完全包含另一个numpy数组b? 有点像b是a的子集 谢谢 编辑: 如果您想了解b是a的连续子数组,那么a和b是一维numpy数组 def is_subset(a, b): b = np.unique1d(b) c = np.intersect1d(a,b) return c.size == b.size 如果任意一个数组可以包含重复的值,从算法上讲,您的问题相当于一个。对于这个问题,有几种已知的算法。不幸的是,两者都不太简单 否则,通过首先在

如何有效地检查一个numpy数组a是否完全包含另一个numpy数组b? 有点像b是a的子集

谢谢

编辑:
如果您想了解
b
a
的连续子数组,那么a和b是一维numpy数组

def is_subset(a, b):
  b = np.unique1d(b)
  c = np.intersect1d(a,b)
  return c.size == b.size
如果任意一个数组可以包含重复的值,从算法上讲,您的问题相当于一个。对于这个问题,有几种已知的算法。不幸的是,两者都不太简单

否则,通过首先在
b
中查找第一个元素,然后比较以下所有元素,实现起来很简单:

import numpy as np

def is_subarray_no_repeatition(a, b):
  try:
    i = np.where(a == b[0])[0][0]
  except IndexError:
    # either b is empty, or b[0] not in a
    return b.size == 0
  a = a[i : i+b.size]
  if a.size < b.size:
    return False
  return (a == b).all()

@jterrace yes a和b是一维的a或b可以包含重复值吗?也许@neel101您需要检查b的每个元素是否存在于a中,或者b是否作为(连续)子数组存在于a中?只想检查b的每个元素是否存在于a中。。。你的回答很有效,谢谢!:)numpy中没有任何功能可以完成这项工作吗?我使用的是np.intersect1d(a,b)=b:不幸的是,它给出了形状不匹配的错误