data analysis(数组排序)

'''
数组排序
1. sort
sort是inplace=True的,lexsort是inplace=False的,所以想要看lexsort的排序效果,需要用lexsort函数返回的下标索引去获取元素观察。
2. lexsort。
对于多个数组,lexsort是把最后一个数组排序,再以这个排序方式去排前面的数组。
对于多维数组,lexsort是把最后一行排序,再以这个排序去排前面的行。

如果最后一个数组(或最后一行)里面有重复的,就根据重复元素对应到 前一个数组(或前一行)上的元素的大小顺序。依次类推。
'''


import numpy as np
# arr = np.arange(16,0,-1)

# 排序
# arr.sort()
# print(arr)

# def sort(self, axis=-1, kind='quicksort', order=None):
# axis=1横向排序
# axis=0纵向排序
# kind选择排序算法
# order选择一个索引,对该索引下面的数据排序。在源码中有一个例子。


# arr2 = np.arange(16,0,-1).reshape(4,4)
# arr2.sort(axis=1)#横向
# print(arr2)
# arr2.sort(axis=0)#纵向
# print(arr2)



# arr3 = np.arange(6,2,-1)
# print(arr3.argsort())#返回排序后的元素在原来数组中的下标索引
# arr3 = np.array([3,4,6,5])
# print(arr3.argsort())



# arr4 = np.array([6,2,8,3])
# arr5 = np.array([12,65,98,34])
# arr6 = np.array([234,483,173,841])
# res = np.lexsort((arr4,arr5,arr6))
# print(res)[2 0 1 3]
# print(type(res))<class 'numpy.ndarray'>

surname = ('tom','jerry','an','jerry')
surname2 = ('tom','jerry','zip','jerry')#相同元素排序,根据前一个数组first_name对应位置上的来排,如果前一数组也相同,再根据前前个,依次类推。
surname3 = ('tom','jerry','jerry','zip')#
first_name = ('Bing','Cage','Obama','Dush')
ind = np.lexsort((first_name,surname))
ind2 = np.lexsort((first_name,surname2))
ind3 = np.lexsort((first_name,surname3))
print(ind)#[2 3 1 0]
print(ind2)#[1 3 0 2]
print(ind3)#[1 2 0 3]

# arr7 = np.array([[2,3],[6,4],[5,1]])
# res = np.lexsort(arr7)
# print(res)
# for r in res:
#     print(arr7[0][r])
#     print(arr7[1][r])
#     print(arr7[2][r])
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值