我试图找到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)
...
然后我失去了轨道。算法本身在哪里?
答案 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页。我在过去看到了更糟糕的结果。