📅  最后修改于: 2023-12-03 15:18:02.969000             🧑  作者: Mango
numpy.recarray.argpartition()
函数是一个在记录数组中执行间接分区的函数。它返回一个记录数组,其元素被划分为小于k
和大于等于k
两部分,但不一定是有序的。
numpy.recarray.argpartition(self, kth, axis=-1, kind='introselect', order=None)
self
:输入数组。kth
:所需分区的元素索引或元素。axis
:沿着此轴执行排序的轴。不指定时默认为最后一个轴。kind
:选择数据将被划分的算法。可用算法包括“introselect”(默认),“heapsort”和“quicksort”。order
:要排序的字段。函数的返回值是一个记录数组,包含被分区的输入数组的索引数组。例如,如果输入数组被按照某个字段排序,则返回的索引数组将仅在该字段中分区。
import numpy as np
# 定义一个记录数组
dt = np.dtype([('name', 'S10'), ('age', int), ('height', float)])
a = np.array([('lihua', 21, 175.2), ('xiaohei', 22, 182.1), ('xiaoming', 20, 178.4)], dtype=dt)
# 按年龄字段进行分区,小于22的在左侧,大于等于22的在右侧,但元素不一定有序。
print(a.argpartition(1))
输出:
[2 0 1]
在上面的示例中,输入的记录数组中的第一个元素都被区分为小于等于22或大于22的两部分。对于a.argpartition(1)
,输出的分区后的索引数组为[2,0,1]
。