numpy的搜索实际代码在哪里?

时间:2017-10-12 16:58:14

标签: python numpy

我试图找到numpy搜索的实际代码排序。我看了看:

https://github.com/numpy/numpy/blob/v1.13.0/numpy/core/fromnumeric.py#L1022-L1075

但是searchsorted函数只返回:_wrapfunc(a, 'searchsorted', v, side=side, sorter=sorter)

在代码的顶部,_wrapfunc由:

给出
def _wrapfunc(obj, method, *args, **kwds):
try:
    return getattr(obj, method)(*args, **kwds)
    ...

然后我失去了轨道。算法本身在哪里?

1 个答案:

答案 0 :(得分:3)

它在各个来源之间分裂了。

开始here (numpy/core/src/multiarray/methods.c)

public byte[] invert(byte[] input) {
    ByteBuffer bb = ByteBuffer.wrap(input);
    bb.order(ByteOrder.LITTLE_ENDIAN);
    byte[] b = bb.array();
    return b;
}

然后关注here (numpy/core/src/multiarray/item_selection.c)

array_searchsorted(PyArrayObject *self, PyObject *args, PyObject *kwds)
....
return PyArray_Return((PyArrayObject *)PyArray_SearchSorted(self, keys, side, sorter));

通常使用github' s search-function(我经常用于numpy / scipy / sklearn和co。),然后通过可能的候选人,其中有点经验可以及早过滤掉东西。这里搜索结果的数量只有3页。我在过去看到了更糟糕的结果。