Python 如何找到np.partition()的实际实现?

Python 如何找到np.partition()的实际实现?,python,numpy,Python,Numpy,为了理解这一点,我正在努力阅读 它只是用numpy.asanyarray()封装输入,并调用自身 这似乎不是实际的实现,我如何才能找到np.partition()的实际实现?正如您所指出的,np.partition使用ndarray的partition方法,该方法本身是用C编写的,名称为array\u partition。如果查看源代码,您将看到它在内部使用另一个C函数,PyArray\u Partition 要查找哪个源文件包含哪个函数,您可以始终使用GitHub的搜索栏搜索特定的repo:-

为了理解这一点,我正在努力阅读

它只是用numpy.asanyarray()封装输入,并调用自身


这似乎不是实际的实现,我如何才能找到np.partition()的实际实现?

正如您所指出的,
np.partition
使用
ndarray
partition
方法,该方法本身是用C编写的,名称为
array\u partition
。如果查看源代码,您将看到它在内部使用另一个C函数,
PyArray\u Partition


要查找哪个源文件包含哪个函数,您可以始终使用GitHub的搜索栏搜索特定的repo:-)

这只是它的一半,
PyArray\u Partition
是一个外部函数,原则上让您在不同的算法之间进行选择(
kind
参数到
np.Partition
)。目前只有
introselect
()可用(),并且正在实施中。非常感谢。您使用什么关键字来查找np.partition和array\u partition之间的连接?我在GitHub上用“np.partition”搜索,得到了“21个代码结果”,其中包含“fromnumeric.py”文件和其他20个无助的结果。搜索“partition”得到了34个代码结果,其中包含您需要的部分。我怎么知道这是我第一眼就需要的呢。我需要逐一检查所有结果吗?我通常忽略涉及“测试”的结果。@whnlp我所做的基本上是:我像你一样搜索“分区”。当我在结果中看到一堆C文件时,我猜它一定是用C实现的NumPy的一部分。然后我根据文件名和搜索结果中显示的几行内容浏览了一下结果,看看可能包含哪些实现。@whnlp通常最棘手的部分是找到“桥”在Python和C之间,有很多数组方法映射。例如在中使用的函数
PyArg_ParseTupleAndKeywords
是一个很好的提示,因为它解析Python参数。从那里你可以跳转到
PyArray\u Partition
get\u Partition\u func
*introselect
if axis is None:
    # flatten returns (1, N) for np.matrix, so always use the last axis
    a = asanyarray(a).flatten()
    axis = -1
else:
    a = asanyarray(a).copy(order="K")
a.partition(kth, axis=axis, kind=kind, order=order)
return a