首页 > 解决方案 > numpy.argpartition 文档不够清楚

问题描述

我试图numpy.argpartition通过阅读它的文档来理解它,但我仍然感到困惑。
文档中,据说

它返回一个索引数组,这些索引以分区顺序沿给定轴索引数据。

我在这句话中没有得到的是“按分区顺序”。
此外,当我使用np.argpartition示例时,我没有得到任何合乎逻辑的东西(对我来说)。

>>> a = np.array([352, 538, 215, 400, 631, 498, 586, 731])
>>> np.argpartition(a, 2)
array([2, 0, 3, 1, 4, 5, 6, 7])
>>> np.argpartition(a, 3)
array([2, 0, 3, 5, 1, 4, 6, 7])

我期望的是一个数组,其中包含数组 a 的排序值的索引。

谁能解释/澄清如何np.argpartition工作?

标签: pythonnumpy

解决方案


In [163]: np.argpartition(a, 3)                                                                              
Out[163]: array([2, 0, 3, 5, 1, 4, 6, 7])
In [164]: a[_]                                                                                               
Out[164]: array([215, 352, 400, 498, 538, 631, 586, 731])
In [165]: np.partition(a,3)                                                                                  
Out[165]: array([215, 352, 400, 498, 538, 631, 586, 731])

在 164 和 165 中,400 左侧的所有内容都较小,右侧的所有内容都较大。


推荐阅读