Python 检查Numpy数组中是否包含单个元素

Python 检查Numpy数组中是否包含单个元素,python,arrays,numpy,Python,Arrays,Numpy,我只想检查一个numpy数组是否包含一个与列表中的contains类似的数字。有没有一种简洁的方法可以做到这一点 a = np.array(9,2,7,0) a.contains(0) == true 您可以在中使用0。i、 e a = np.array([9,2,7,0]) 0 in a 如果是numpy数组: a = np.array([1, 2]) 然后使用: 1 in a 返回true,而: 0 in a 返回false我在python 3.7中计时了一些方法来执行此操作:

我只想检查一个numpy数组是否包含一个与列表中的contains类似的数字。有没有一种简洁的方法可以做到这一点

a = np.array(9,2,7,0)
a.contains(0)  == true

您可以在中使用
0。i、 e

a = np.array([9,2,7,0])
0 in a
如果是numpy数组:

a = np.array([1, 2])
然后使用:

1 in a
返回true,而:

0 in a

返回false

我在python 3.7中计时了一些方法来执行此操作:

将numpy导入为np
rnd=np.random.RandomState(42)
一个d=rnd.randint(100,尺寸=10000)
n_d=rnd.randint(100,大小=(10000,10000))
搜索=42
#一维
%timeit if np.isin(one_d,searched,假设_unique=True)。any():pass
%timeit if np.in1d(一个搜索,假设唯一=True)。any():pass
%一次搜索时间:通过
%timeit if one_d[np.searchsorted(one_d,searched)]==searched:pass
%如果np.count\u非零(one\u d==searched),则timeit:pass
打印(“---------------------------------------------------------------------------”)
#N维
%timeit if np.isin(n_d,searched,假设_unique=True)。any():pass
%timeit如果np.in1d(n_d,searched,假设_unique=True)。any():pass
%如果在n\u d:pass中搜索timeit
%如果np.count\u非零(n\u d==searched),则timeit:通过

1d阵列的最快速度是上面提出的
np。searchsorted
,但它不能用于ndarrays。另外,
np.count\u nonzero
是最快的,但它并不比
中的pythonic
快多少,所以我建议使用
中的

可能重复的
np.array(9,2,7,0)
会引发一个错误。可能重复的伟大答案,谢谢!
0 in a
>>> 42.8 µs ± 79.3 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)
>>> 38.6 µs ± 76.2 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)
>>> 16.4 µs ± 57.3 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
>>> 4.7 µs ± 62.7 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
>>> 12.1 µs ± 69.1 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
>>> ------------------------------------------------------------------
>>> 239 ms ± 1.04 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
>>> 241 ms ± 1.17 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
>>> 156 ms ± 2.78 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)
>>> 163 ms ± 527 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)