当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python NumPy argpartition方法用法及代码示例


NumPy 的 argparition(~) 方法用于根据升序对数组进行分区。用语言解释它是如何工作的相当困难,所以让我们看一个简单的例子。

例子

假设我们有以下未排序的数组:

x = np.array([8,5,7,10,9])

x 的排序版本是:

[5,7,8,9,10]

该排序版本的原始索引是:

[1,2,0,4,3]

argpartition() 方法不返回此排序索引,而是要求您选择一个用于分区的索引,并确保所有小于此索引的值的索引值都出现在它之前,并且所有大于此索引的索引值值出现在其后面。

这是一个例子:

x = np.array([8,5,7,9,6,2])
np.argpartition(x,3)



array([4, 5, 1, 2, 3, 0])

在这里,我们设置 kth=1 ,这意味着我们希望索引 3 之前的所有值(包括索引 3)在排序时位于正确的位置。换句话说,第三个索引,或 x 的第四个 (3+1) 最小值(在本例中为 7),在排序时将位于其正确的位置,所有小于 7 的值都位于它之前,并且所有大于 7 的则紧随其后。因此,一些有效的排序版本如下:

[4, 5, 1, 2, 3, 0]
[4, 1, 2, 5, 3, 0]
[4, 5, 1, 2, 3, 0]
...
警告

k 索引之前的值的顺序未定义。这就是为什么值 4 可能出现在值 1 之前。argpartition 从以上选项中选择一个,并返回其索引。因此,不能保证返回的索引数组代表完美排序的数组。

在我们的具体示例中,返回的索引为:

y



array([4, 5, 1, 2, 3, 0])

它代表以下排序版本:

x[y]



array([6, 2, 5, 7, 9, 8])

在此,请注意以下事项:

  • k-th 索引之前的值(本例中为索引 3)小于 k-th 索引处的值,但它们不一定已排序。

  • k-th 索引之后的值大于 k-th 索引处的值

相关用法


注:本文由纯净天空筛选整理自Isshin Inada大神的英文原创作品 NumPy | argpartition method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。