Python Numpy数组\uuuu包含\uuuu检查

Python Numpy数组\uuuu包含\uuuu检查,python,numpy,Python,Numpy,我得到了一个数组: temp = np.empty(5, dtype=np.ndarray) temp[0] = np.array([0,1]) 我想检查temp中的np.array([0,1]),在上面的示例中,这显然是错误的,但代码返回false。我还尝试了temp.\uuuuuuuuuuuuuuuuuuuuuuuu(np.array([0,1])),但也返回false。为什么会这样?这不应该是真的吗 编辑: 所以\uuuuuuuuuuuuuuuuuuuuuu不起作用。还有其他检查方法吗

我得到了一个数组:

temp = np.empty(5, dtype=np.ndarray) 
temp[0] = np.array([0,1])
我想检查temp中的
np.array([0,1]),在上面的示例中,这显然是错误的,但代码返回false。我还尝试了
temp.\uuuuuuuuuuuuuuuuuuuuuuuu(np.array([0,1]))
,但也返回false。为什么会这样?这不应该是真的吗

编辑:


所以
\uuuuuuuuuuuuuuuuuuuuuu
不起作用。还有其他检查方法吗?

在python中,您需要了解的一件事是,从语义上讲,
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
基于
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。(当然可以重写
\uuuu包含\uuu
操作符来执行其他操作,但情况不同)

现在,对于numpy数组,
\uuuu eq\uuu
根本不会返回
bool
。每个使用numpy的人都会在某些时候遇到此错误:

if temp == temp2:
   print 'ok'
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
这意味着,考虑到
\uuuuu contains\uuu
ndarray.\uuuu eq\uuu
的语义冲突,此操作不符合您的要求也就不足为奇了

对于您发布的代码,将
temp
设置为
np.array
而不是
列表
没有明显的优势。在这两种情况下,您都可以使用以下内容“模拟”
\uuuu包含的行为:

temp2 = np.array([0,1])
any( (a == temp2).all() for a in temp if a is not None )
如果您首先解释为什么选择使用异源
np.array
,我可能会想出一个更详细的解决方案


当然,如果没有@user2357112到的链接,这个答案是不完整的。

因此,到目前为止,最好的解决方案是每次迭代整个数组以进行检查?带有
dtype=object
的numpy数组开发得不是很好。基本的事情,比如索引工作。但是二进制操作是偶然的。