美文网首页
numpy 排序

numpy 排序

作者: 北小卡 | 来源:发表于2019-06-26 14:51 被阅读0次
  • numpy 没有直接取top-k的函数。需要手动实现。

argpartition
这个操作指:根据一个数值x,把数组中的元素划分成两半,使得index前面的元素都不大于x,index后面的元素都不小于x。(快排)

numpy中的argpartition()函数就是起的这个作用。对于传入的数组a,先用O(n)复杂度求出第k大的数字,然后利用这个第k大的数字将数组a划分成两半。

此函数不对原数组进行操作,它只返回分区之后的下标

>>> x = np.array([3, 5, 6, 4, 2, 7, 1])
>>> x[np.argpartition(x, 3)]
array([2, 1, 3, 4, 5, 7, 6]) #3
def partition_arg_topK(matrix, K, axis=0):
    """
    perform topK based on np.argpartition
    :param matrix: to be sorted
    :param K: select and sort the top K items
    :param axis: 0 or 1. dimension to be sorted.
    :return:
    """
    a_part = np.argpartition(matrix, K, axis=axis)
    if axis == 0:
        row_index = np.arange(matrix.shape[1 - axis])
        a_sec_argsort_K = np.argsort(matrix[a_part[0:K, :], row_index], axis=axis)
        return a_part[0:K, :][a_sec_argsort_K, row_index]
    else:
        column_index = np.arange(matrix.shape[1 - axis])[:, None]
        a_sec_argsort_K = np.argsort(matrix[column_index, a_part[:, 0:K]], axis=axis)
        return a_part[:, 0:K][column_index, a_sec_argsort_K]

reference

相关文章

  • 2019-08-06

    NumPy - 排序、搜索和计数函数 NumPy中提供了各种排序相关功能。 这些排序函数实现不同的排序算法,每个排...

  • numpy 排序

    numpy 没有直接取top-k的函数。需要手动实现。 argpartition这个操作指:根据一个数值x,把数组...

  • 对矩阵的操作2

    对矩阵的索引排序: data = numpy.sin(numpy.arange(20)).reshape(5,4)...

  • Numpy进阶之排序小技巧

    Numpy提供大量用数组操作的函数,其中不乏常见的排序函数。 这里讲一下numpy.sort、numpy.args...

  • numpy之初探排序

    排序 排序 numpy与python列表内置的方法类似,也可通过sort方法进行排序。 用法如下: 可以发现上述的...

  • numpy.argsort

    numpy.argsort返回数组从小到大排序后的索引值 一维数组排序 二维数组排序

  • 107、NumPy的排序

    NumPy的排序跟Python内置的列表类型一样,可以使用sort方法就地排序。 就地排序就是不复制...

  • NumPy 特殊例程

    NumPy 特殊例程 字典排序 复数排序 使用 searchsorted 从数组移除元素 期值与现值预测 注: 假...

  • numpy数组排序

    numpy快速排序:np.sort np.argsort np.sort:在不修改原始数据的基础上返回一个排好序...

  • 认识Numpy—数值计算

    本节主要介绍内容有:如何利用numpy创建、保存、加载数据,如何利用numpy基础函数进行排序和计算均值、方差等。...

网友评论

      本文标题:numpy 排序

      本文链接:https://www.haomeiwen.com/subject/pxntcctx.html