numpy.argpartition#
- numpy.argpartition(a, kth, axis=-1, kind='introselect', order=None)[來源]#
使用 kind 關鍵字指定的演算法,沿著給定軸執行間接分割。它會傳回一個索引陣列,其形狀與 a 相同,該陣列會沿著給定軸以分割順序索引資料。
- 參數:
- aarray_like
要排序的陣列。
- kthint 或 int 序列
要分割的元素索引。第 k 個元素將位於其最終排序位置,所有較小元素將移到其前面,所有較大元素將移到其後面。分割區中所有元素的順序未定義。如果提供 k 個序列,它將一次將所有這些元素分割到其排序位置。
版本 1.22.0 已棄用:不建議將布林值作為索引傳遞。
- axisint 或 None,選用
要沿著排序的軸。預設值為 -1(最後一個軸)。如果為 None,則使用扁平化陣列。
- kind{‘introselect’},選用
選擇演算法。預設值為 ‘introselect’
- orderstr 或 str 列表,選用
當 a 是具有定義欄位的陣列時,此引數指定要先比較哪些欄位,依序第二個、等等。單一欄位可以指定為字串,並非所有欄位都需要指定,但未指定的欄位仍將使用,按照它們在 dtype 中出現的順序來打破平局。
- 傳回值:
- index_arrayndarray,int
索引陣列,沿著指定的軸分割 a。如果 a 是一維的,則
a[index_array]
會產生分割的 a。更一般而言,np.take_along_axis(a, index_array, axis=axis)
始終產生分割的 a,與維度無關。
另請參閱
partition
描述使用的分割演算法。
ndarray.partition
原地分割。
argsort
完整間接排序。
take_along_axis
將來自 argpartition 的
index_array
應用於陣列,如同呼叫 partition 一樣。
註解
不保證傳回的索引會根據值排序。此外,預設選擇演算法
introselect
是不穩定的,因此不保證傳回的索引是元素最早/最晚出現的索引。argpartition
適用於具有 nan 值的實數/複數輸入,請參閱partition
以取得關於增強排序順序和不同選擇演算法的註解。範例
一維陣列
>>> import numpy as np >>> x = np.array([3, 4, 2, 1]) >>> x[np.argpartition(x, 3)] array([2, 1, 3, 4]) # may vary >>> x[np.argpartition(x, (1, 3))] array([1, 2, 3, 4]) # may vary
>>> x = [3, 4, 2, 1] >>> np.array(x)[np.argpartition(x, 3)] array([2, 1, 3, 4]) # may vary
多維陣列
>>> x = np.array([[3, 4, 2], [1, 3, 1]]) >>> index_array = np.argpartition(x, kth=1, axis=-1) >>> # below is the same as np.partition(x, kth=1) >>> np.take_along_axis(x, index_array, axis=-1) array([[2, 3, 4], [1, 1, 3]])