當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。