一、快速概述
np.partition是numpy包內的一個函數,功能是對numpy數組進行分割(partition操作),返回排序(或未排序)數組的切割結果。 partition(a, kth, axis=- 1, kind=’introselect’, order=None),其中a:輸入的numpy數組,kth:分割點所在的位置,axis:分割軸的方向,kind:指明partition使用的算法,order:指定排序方式。
二、分割操作
np.partition的基本思路是把數組分成三部分:第一部分是小於等於分割點的元素,第二部分是等於分割點的元素,第三部分是大於分割點的元素。當kth參數為整數時,代表着分割點在經過排序的後數組中的索引位置(此值可以為負)。當kth參數為數組時,函數將返回一個數組,其中每個元素對應於對應傳遞數組中元素的分割索引位置。
三、代碼示例
import numpy as np
#樣例數組
a = np.array([3, 4, 2, 1, 5, 0])
#對a數組按分割點3進行分割後的結果
print(np.partition(a, 3))
#對a數組按照分割點3分割,並返回分割點位置在經過排序後的索引
print(np.partition(a, 3).argsort())
#對二維數組按照列分割
print(np.partition(a, (1, 3), axis=1))
#選擇分割算法
print(np.partition(a, 3, kind='heapsort'))
四、參數詳解
1、kth參數
kth參數可以指定分割點所在的位置,可以是一個整數或一個數組。當kth為整數時,代表分割的位置在輸出數組中的索引位置;當其為數組時,每個元素對應於對應傳遞數組中元素的分割索引位置。
2、axis參數
axis參數指定了分割的方向,axis可以是0或1,表示將數組分割成行的方向和列的方向,當axis=1時,按列分割。
3、kind參數
kind參數指定了numpy進行分割時所採用的算法。默認值是“introselect”, 它對大多數數據集提供最佳性能。還可以選擇“heap”或“quicksort”算法。
4、order參數
order參數指定如何比較元素。默認為“None”,使用默認值時,函數使用Any算法。不過,我們可以將其設置為“C”、“F”或“complex”,並將a指定為以相應順序存儲的數組。
五、小結
np.partition是numpy數組的一個重要的操作,能夠分割數組的各個部分,支持選擇算法和排序方式等多種參數調整。使用np.partition可以提高數組處理的效率和準確度。
原創文章,作者:DSSCD,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/369264.html