python 中的 numpy.argpartition()
原文:https://www.geeksforgeeks.org/numpy-argpartition-in-python/
numpy.argpartition()
函数用于创建输入数组的间接分区副本,其元素以这样的方式重新排列,即第 k 个位置的元素的值位于排序数组中的位置。所有小于第 k 个元素的元素都移动到这个元素之前,所有等于或大于这个元素的元素都移动到它的后面。两个分区中元素的顺序未定义。它返回一个与 arr 形状相同的索引数组,即arr[index_array]
产生 arr 的一个分区。
语法: numpy.argpartition(arr,kth,axis=-1,kind='introselect ',order=None)
参数: arr : 【阵 _ 象】输入阵。 kth:【int 或 int 序列】要划分的元素索引。 轴:【int 或 None】要沿其排序的轴。如果为“无”,则数组在排序前被展平。默认值为-1,沿最后一个轴排序。 种类:选择算法。默认值为“introselect”。 顺序:【字符串或字符串列表】当 arr 是定义了字段的数组时,此参数指定首先比较哪些字段,其次比较哪些字段等。
返回:【index _ Array,ndarray】沿指定轴划分数组的索引数组。
代码#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)
Output:
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)
Output:
Input array : [2 0 1 5 4 3]
Output partitioned array indices: [1 2 0 3 4 5]