__contains__ 对 ndarrays 有何作用?
- 2025-03-05 09:15:00
- admin 原创
- 3
问题描述:
>>> x = numpy.array([[1, 2],
... [3, 4],
... [5, 6]])
>>> [1, 7] in x
True
>>> [1, 2] in x
True
>>> [1, 6] in x
True
>>> [2, 6] in x
True
>>> [3, 6] in x
True
>>> [2, 3] in x
False
>>> [2, 1] in x
False
>>> [1, 2, 3] in x
False
>>> [1, 3, 5] in x
False
我不知道__contains__
ndarrays 是如何工作的。我找了相关文档却找不到。它是如何工作的?有文档记录吗?
解决方案 1:
ndarray.__contains__
我在 中找到了 的来源numpy/core/src/multiarray/sequence.c
。正如来源中的评论所述,
thing in x
相当于
(x == thing).any()
对于 ndarray ,无论和x
的维度如何。这仅在 为标量时才有意义;当 不是标量时广播的结果会导致我观察到的奇怪结果,以及我没有想到要尝试的奇怪现象。确切来源是x
`thingthing
thing`array([1, 2, 3]) in array(1)
static int
array_contains(PyArrayObject *self, PyObject *el)
{
/* equivalent to (self == el).any() */
int ret;
PyObject *res, *any;
res = PyArray_EnsureAnyArray(PyObject_RichCompare((PyObject *)self,
el, Py_EQ));
if (res == NULL) {
return -1;
}
any = PyArray_Any((PyArrayObject *)res, NPY_MAXDIMS, NULL);
Py_DECREF(res);
ret = PyObject_IsTrue(any);
Py_DECREF(any);
return ret;
}
解决方案 2:
似乎numpy
正在__contains__
针对二维情况做类似的事情:
def __contains__(self, item):
for row in self:
if any(item_value == row_value for item_value, row_value in zip(item, row)):
return True
return False
[1,7]
有效,因为0
第一行的第 th 个元素0
与 的第 th 个元素匹配[1,7]
。[1,2]
等也是一样。对于[2,6]
,6 与最后一行的 6 匹配。对于[2,3]
,没有任何元素与同一索引处的行匹配。[1, 2, 3]
很简单,因为形状不匹配。
请参阅此处了解更多信息,以及这张票。
解决方案 3:
如何检查一维是否np.ndarray
等同于二维中的一行np.ndarray
正如已经指出的那样,
[1, 2] in x
相当于([1, 2] == x).any()
。
[1,2,3] in x
如今会抛出一个DeprecationWarning
,因为它有 3 个元素长,而x.shape[1]
只有 2 个。
如果你只是想知道一个是否np.ndarray
仅包含(以人类解释的方式)于另一个np.ndarray
,请使用此
>>> x = np.array([[1, 2], [3, 4], [5, 6]])
>>> np.any([np.array_equal([1, 7], el) for el in list(x)])
False
>>> np.any([np.array_equal([1, 2], el) for el in list(x)])
True
相关推荐
热门文章
项目管理软件有哪些?
- 2025年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 项目管理必备:盘点2024年13款好用的项目管理软件
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
热门标签
云禅道AD