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数组开发得不是很好。基本的事情,比如索引工作。但是二进制操作是偶然的。