searchsorted()函数对于在numpy中组织数据非常有用,并且尤其适用于大型数组。

为什么这么快?仅仅是(类似于向量化代码),我们可以直接在“ C”中运行代码。但是是否有可能在numpy中使用更基本的功能得到类似的东西?我可以编写(使用matlab的人称呼)“矢量化代码”来执行searchsorted的操作吗?

最佳答案

Spyder(IPython控制台)和线魔术非常有用...

np.searchsorted??
Signature: np.searchsorted(a, v, side='left', sorter=None)
Source:
@array_function_dispatch(_searchsorted_dispatcher)
def searchsorted(a, v, side='left', sorter=None):
    """
    Find indices where elements should be inserted to maintain order.
... huge snip
    This function uses the same algorithm as the builtin python `bisect.bisect_left`
    (``side='left'``) and `bisect.bisect_right` (``side='right'``) functions,
    which is also vectorized in the `v` argument.
... ditto
    """
    return _wrapfunc(a, 'searchsorted', v, side=side, sorter=sorter)
File:      c:\...source path...\lib\site-packages\numpy\core\fromnumeric.py
Type:      function


因此,如果需要实际的算法详细信息,则搜索将在python方面进行二等分。

08-07 12:15