- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我得到了一个数组:
temp = np.empty(5, dtype=np.ndarray)
temp[0] = np.array([0,1])
我想检查 np.array([0,1]) in temp
,在上面的示例中显然是,但代码返回 false。我也试过 temp.__contains__(np.array([0,1]))
但也返回 false。为什么是这样?它不应该返回 true 吗?
编辑:
所以 __contain__
不会工作。有没有其他的检查方式?
最佳答案
一般来说,在 python 中,您需要了解的一件事是,从语义上讲,__contains__
是基于 __eq__
的,即它寻找满足 ==
谓词。 (当然,可以覆盖 __contains__
运算符来做其他事情,但那是另一回事)。
现在,对于 numpy 数组,__eq__
根本不返回 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()
这意味着,考虑到 __contains__
和 ndarray.__eq__
的语义冲突,此操作不会执行您想要的操作也就不足为奇了。
对于您发布的代码,将 temp
设置为 np.array
而不是 list
并没有明显的优势。在任何一种情况下,您都可以“模拟” __contains__
的行为,例如:
temp2 = np.array([0,1])
any( (a == temp2).all() for a in temp if a is not None )
如果您首先解释为什么选择使用异构 np.array
,我可能会提出更详细的解决方案。
当然,如果没有@user2357112 到this question 的链接,这个答案就不会完整。 .
关于python - Numpy 数组 __contains__ 检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20341911/
这是我的代码: class a(object): d='ddd' def __contains__(self): if self.d:return True b=a()
是否可以将列表中的“__ 包含 __”函数传递给多个参数?我想检查至少我在列表中的项目之一是否存在于不同的列表中。 例如:[0,1,4,8,87,6,4,7,5,'a','f','er','fa','
我有一个这样定义的简单类: class User(object): def __init__(self, id=None, name=None): self.id = id
我写了一个 python 程序,它使用 contains 语法的多个实例来查看字典和列表。 if not test_map[var].__contains__(string): 看来我最好还是使用 :
一般性问题 我想知道是否存在与 __contains__ 相反的 Python(即类似 __notcontains__ 的东西)。 我的例子 我需要它用于以下代码: df_1 = df[(df.id1
class a(object): def a(self): return True __contains__=a b=a() print 2 in b#why erro
因此在 itertools 配方部分,他们有一段代码如下所示: seen = set() seen_add = seen.add 我想知道类似的想法是否可以弥合 in 和 __contains__ 之
我的 Sentence 类中有 contains 方法,它检查一个单词是否在一个句子中(在我的例子中是字符串) 我尝试检查我的 functionTesting 是否 hello 存在于 hello w
列表类的 __contains__ 方法是检查对象本身是否是列表的元素,还是检查列表是否包含与给定参数等效的元素? 你能给我一个例子来证明吗? 最佳答案 >>> a = [[]] >>> b = []
我需要在 Python 中模拟枚举,并通过编写如下类来实现: class Spam(Enum): k = 3 EGGS = 0 HAM = 1 BAKEDBEANS =
我有一个工作文件[如下],但我想知道前三行是否有更好的解决方案。 我在一个文件夹中有几个文件,还有一个脚本根据特定的和保存的 处理它们在每个文件的名称中。但是,我被告知我不应该使用 __contai
我得到了一个数组: temp = np.empty(5, dtype=np.ndarray) temp[0] = np.array([0,1]) 我想检查 np.array([0,1]) in tem
文档说 __contains__ 应该 如果 item 在 self 中则返回 true,否则返回 false。但是,如果该方法返回一个非 bool 值 x,似乎 python 会自动将其转换为 bo
对于内置的 python 容器(list、tuple 等),in 运算符等同于 any(y == item for item in container) 需要注意的是前一种方法更快(更漂亮): In
从__contains__文档中借用文档 print set.__contains__.__doc__ x.__contains__(y) y in x. 这似乎适用于原始对象,如 int、base
>>> x = numpy.array([[1, 2], ... [3, 4], ... [5, 6]]) >>> [1, 7] i
前几天我第一次在一个类上实现了 __contains__ 方法,结果出乎我的意料。我怀疑 in 有一些微妙之处操作符我不懂,希望有人能赐教。 在我看来,in 运算符不只是简单地包装对象的 __cont
我有一个 Nx3 numpy 数组,其中列出了一个曲面的 N 个三角形面的 3 个顶点,以及一个 Nx1 数组,其中包含与每个面对应的值。 我想(尽可能最好地)将这些“面”值转换为“顶点”值,例如通过
我无法理解如何在我的类中正确设置包含 方法。我知道当你调用它时它会自动使用运算符“in”,我只是不明白如何正确设置它。 我必须使用它来查看 anotherCircle 是否包含在特定圆圈中(均来自用户
我正在对 OrderedDict(Cpython,2.7.3)进行子类化以表示数据文件。 __getitem__ 从数据文件中提取一个字段并将其设置在当前实例上,类似于我在下面发布的代码。现在我想覆盖
我是一名优秀的程序员,十分优秀!