作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
>>> 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。找的时候没找到相关文档。它是如何工作的?是否在任何地方记录了它?
最佳答案
我在 numpy/core/src/multiarray/sequence.c
中找到了 ndarray.__contains__
的源代码.作为源状态中的评论,
thing in x
相当于
(x == thing).any()
对于 ndarray x
,无论 x
和 thing
的维度如何。这只有在 thing
是标量时才有意义;当 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;
}
关于python - __contains__ 如何为 ndarrays 工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18320624/
我是一名优秀的程序员,十分优秀!