Numpy获得最大的K个数据及最小的K个数据

在numpy中使用O(1)的np.argpartition()方法

np.argpartition官网文档:https://numpy.org/doc/stable/reference/generated/numpy.argpartition.html

对于一个array,使用:

np.argpartition(array, kth=8)

其中kth代表第几大的数据,它通过将整个数组切分成两个部分,左边是比第k大的数小的部分,右边是比第k大的数据大的部分

反过来同理,下面的函数加一个负号就代表这是第8小的数据:

np.argpartition(array, kth=-8)

示例代码

import numpy as np


def get_k_max(array, k):
    _k_sort = np.argpartition(array, -k)[-k:]  # 最大的k个数据的下标
    return array[_k_sort]


def get_k_min(array, k):
    _k_sort = np.argpartition(array, k)[:k]  # 最小的k个数据的下标
    return array[_k_sort]


if __name__ == '__main__':
    a = np.array([10, 2, 3, 40, 5, 6, 7, 8, 9])
    print("得到TOP3的数据:", get_k_max(a, 3))
    print("得到3个最小的数据:", get_k_min(a, 3))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

呆萌的代Ma

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值