我想看看numpy.argsort()
是如何工作的。
1.在文档中,numpy.argsort()
的源代码是numpy.core.fromnumeric.py
。这是可以理解的。https://numpy.org/doc/stable/reference/generated/numpy.argsort.html
core.fromnumeric.argsort()
要复杂一点。
忽略装饰器,如果fromnumeric.argsort(arr)
返回_wrapfunc(arr, "argsort")
,则返回arr.argsort()
。这不是问题。
假设arr
是numpy.ndarray
,它可能在array_api.__init__.py
中。
1.是从这里来的_sorting_functions.argsort()
调用numpy.argsort()
这就是我一开始要找的,它是循环的https://github.com/numpy/numpy/blob/main/numpy/array_api/_sorting_functions.py
额外的
1.在numpy.__init__.pyi
中,numpy.argsort()
来自core.fromnumeric
https://github.com/numpy/numpy/blob/main/numpy/init.pyi1.
和5.
是相同的。
这些是循环引用吗?我当然知道这些工作。2.
中的it might be in array_api.__init__.py.
是错误的吗?那么它的实现的实际位置在哪里?
此问题的背景
我注意到np.unique
在运行return_index=True
的时候比较慢。我想在排序后的数组上运行np.unique
,但是发现np.unique
调用了np.argsort
。所以我试图找出np.argsort
和np.sort
之间的区别,并且需要了解更多关于np.argsort
的信息。
1条答案
按热度按时间juud5qan1#
你为什么想看源代码?在你自己的
c
代码项目中实现它?我不认为它会帮助你在python中更有效地使用它。在一个Ipython会话中,我使用??
好的,这是一个函数把责任推给方法的典型情况。如果需要的话,函数版本会把输入转换成数组,然后调用数组的方法。通常函数版本有更完整的文档,但是功能基本上是一样的。
通常这就是故事的结尾。
另一种方法是点击文档上的
[source]
链接。注意事项:
最近的版本增加了这个
dispatch
层;查看发布说明以了解更多细节。根据我的经验,这只会使搜索代码变得更加困难。另一个步骤是进入
github
进行搜索,有时会发现一些有用的信息,但通常是徒劳的。作为一个用户,我不需要知道“如何”的细节。阅读文档很容易,如果我还有问题的话,做一些实验。深入研究
c
代码不会帮助我们更好地使用它。至于你补充的问题:
所有的
ndarray
对象都是“多数组”的,具有从0到32维的任何维。github程式码
在
numpy
github
上,我搜索了argsort
,并选择了最有希望的文件numpy/core/src/multiarray/methods. c这有功能
跳过似乎处理输入参数的代码,它看起来工作是在
它似乎在编号/核心/源代码/多阵列/项目选择. c中定义
等等....
这些都没有帮助我更好地使用它。