python笔记-排序函数

List排序

  • sort()
val_list = [1, 7, 3, 9, 5, 6]
val_list.sort() # sort()没有返回值,在原列表上排序
val_list.sort(reverse=True) # 逆序

print(val_list)

使用sort()方法对list排序会修改list本身,不会返回新list,通常此方法不如sorted()方便,但是如果你不需要保留原来的list,此方法将更有效sort()。
在这里插入图片描述

  • sorted()
num_list = [1, 7, 3, 9, 5, 6]
num_list_ = sorted(num_list) # sorted, list作为参数,返回排序后的list
num_list_revs = sorted(num_list, reverse=True) # 逆序

print(num_list_)
print(num_list_revs)

numpy

1.sort

numpy.sort(a, axis=1, kind=‘quicksort’, order=None)

  • a :所需排序的数组
  • axis:数组排序时的基准,axis=0按行排列;axis=1按列排列
  • kind:数组排序时使用的方法,其中:kind=′quicksort′为快排;kind=′mergesort′为混排;kind=′heapsort′为堆排;
  • order:一个字符串或列表,可以设置按照某个属性进行排序
import numpy as np

nums = [3, 4, 2, 7, 1, 6]
nums = np.array(nums)
nums_sorted = np.sort(nums) # 从小到大排序
print(nums_sorted)

2.argsort

numpy.argsort(a, axis=1, kind=‘quicksort’, order=None)

  • a :所需排序的数组
  • axis:数组排序时的基准,axis=0按行排列;axis=1按列排列
  • kind:数组排序时使用的方法,其中:kind=′quicksort′为快排;kind=′mergesort′为混排;kind=′heapsort′为堆排;
  • order:一个字符串或列表,可以设置按照某个属性进行排序
import numpy as np

nums = [3, 4, 2, 7, 1, 6]
nums = np.array(nums)
nums_sorted = np.sort(nums)
print(nums_sorted)

arg_sorted = np.argsort(nums)
print(arg_sorted)

numpy.argsort() 返回按值递增排序后的索引列表
在这里插入图片描述

argsort()的应用

矩阵特征分解后得到,特征值和特征向量,但是,我们不一定需要所有的特征,故可以选取特征值最大的几个特征和这些特征对应的特征向量。这样,我们只需要利用argsort()求出最大特征值的索引,有了索引就可以直接提取最大特征值和对应的最大特征向量。

def eig_top_k(mat, k):
        eig_vals, eig_vecs = np.linalg.eig(mat)
        print(eig_vals)
        print(eig_vecs)
        sorted_indices = np.argsort(eig_vals) # 值从小到大排序,返回排序的索引
        return eig_vals[sorted_indices[:-k-1:-1]], eig_vecs[:,sorted_indices[:-k-1:-1]] # 复制最后一个到倒数第k个元素

nums = np.array([[1, 7, 9], [3, 6, 7], [4, 3, 5]])
eig_vals, eig_vecs = eig_top_k(nums, 2)
print(eig_vals)
print(eig_vecs)

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值