Python中的 numpy.argpartition()
numpy.argpartition()
函数用于创建输入数组的间接分区副本,其元素以这样的方式重新排列,即第 k 个位置的元素的值位于它在排序数组中的位置。所有小于第 k 个元素的元素都移到该元素之前,所有等于或大于第 k 个元素的元素都移到它后面。两个分区中元素的顺序未定义。它返回与 arr 形状相同的索引数组,即arr[index_array]
产生 arr 的分区。
Syntax : numpy.argpartition(arr, kth, axis=-1, kind=’introselect’, order=None)
Parameters :
arr : [array_like] Input array.
kth : [int or sequence of ints ] Element index to partition by.
axis : [int or None] Axis along which to sort. If None, the array is flattened before sorting. The default is -1, which sorts along the last axis.
kind : Selection algorithm. Default is ‘introselect’.
order : [str or list of str] When arr is an array with fields defined, this argument specifies which fields to compare first, second, etc.
Return : [index_array, ndarray] Array of indices that partition arr along the specified axis.
代码#1:
# Python program explaining
# argpartition() function
import numpy as geek
# input array
in_arr = geek.array([[ 2, 0, 1], [ 5, 4, 9] ])
print ("Input array : \n", in_arr)
out_arr = geek.argpartition(in_arr, 1, axis = 1)
print ("Output partitioned array indices :\n ", out_arr)
Input array :
[[2 0 1]
[5 4 9]]
Output partitioned array indices :
[[1 2 0]
[1 0 2]]
代码#2:
# Python program explaining
# argpartition() function
import numpy as geek
# input array
in_arr = geek.array([ 2, 0, 1, 5, 4, 3])
print ("Input array : ", in_arr)
out_arr = geek.argpartition(in_arr, (0, 2))
print ("Output partitioned array indices: ", out_arr)
Input array : [2 0 1 5 4 3]
Output partitioned array indices: [1 2 0 3 4 5]