2017-10-12 1 views
-3

Ich versuche, den tatsächlichen Code für numpy Suche sortiert zu finden. Ich sah:Wo ist der eigentliche Code für die Suche von numpy?

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

Aber die searchsorted Funktion gibt nur: _wrapfunc(a, 'searchsorted', v, side=side, sorter=sorter)

Und an der Spitze des Codes, _wrapfunc ist gegeben durch:

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

Dann habe ich den Überblick verlieren. Wo ist der Algorithmus selbst?

Antwort

3

Es ist etwas über die Quellen aufgeteilt.

starten here (numpy/core/src/multiarray/methods.c):

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

dann here (numpy/core/src/multiarray/item_selection.c) folgen:

/*NUMPY_API 
* 
* Search the sorted array op1 for the location of the items in op2. The 
* result is an array of indexes, one for each element in op2, such that if 
* the item were to be inserted in op1 just before that index the array 
* would still be in sorted order. 
... 
NPY_NO_EXPORT PyObject * 
PyArray_SearchSorted(PyArrayObject *op1, PyObject *op2, 
        NPY_SEARCHSIDE side, PyObject *perm) 
{ 
... 

Normalerweise Sachen wie das leicht zu finden, wenn die Verwendung von Github search-function (die ich benutze oft für numpy/scipy/sklearn und co.), gefolgt von der Durchsicht der möglichen Kandidaten, wo ein wenig Erfahrung das Zeug früh ausfiltern kann. Hier beträgt die Anzahl der Suchergebnisse nur 3 Seiten. Ich habe in der Vergangenheit viel schlechtere Ergebnisse gesehen.

Verwandte Themen