python排序、得出序号各类方法大全 numpy pandas

整理了一下一行数据的排序和得出序号的各类方法,包括正序和倒序。当然还有pandas包的sort_value和sort_index两个method没有包含在这里。如果是多维的数据,需要将axis=0或者1包含进去。

import numpy as np
import pandas as pd


# =============================================================================
a = np.array([0.8, 0.2, 0.9, 0.1])
a.sort()
# 将a变成排好序的array #不会输出结果 #直接更改array
print(a)
# 结果显示为 [0.1 0.2 0.8 0.9]


# =============================================================================
a = np.array([0.8, 0.2, 0.9, 0.1])
sorted(a)
# 输出结果[0.1 0.2 0.8 0.9] # 但a不会变
print(a)
# 结果依然为[0.8 0.2 0.9 0.1]

# =============================================================================
np.argsort(a)
# 结果为 array([3, 1, 0, 2])
# 这个显示的是,如果排好序,排成[0.1 0.2 0.8 0.9]的样子,这些value在原来的array中的index是多少

# =============================================================================
np.argsort(np.argsort(a))
# 结果为 array([2, 1, 3, 0])
# 这个显示的是,按照原来在array中出现的顺序[0.8, 0.2, 0.9, 0.1],如果排序,各个位置上相应的value在序列中的序号是多少

# =============================================================================
#pd包中类似的
pd.DataFrame(a).rank()
# 结果如下,这个直接是其序号,从1开始,不是像np包中,从0开始
# =============================================================================
#      0
# 0  3.0
# 1  2.0
# 2  4.0
# 3  1.0
# =============================================================================

# =============================================================================
# 上面结果跟下面这个相同
np.argsort(np.argsort(a)) +1
# 结果为 array([3, 2, 4, 1])

# =============================================================================
np.argsort(np.argsort(-a))
# 这个是倒序排序的序号


# =============================================================================
# 排序的另一种方法,正序
a[np.argsort(a)]
# 结果为array([0.1, 0.2, 0.8, 0.9])

# =============================================================================

# 排序的另一种方法,倒序
a[np.argsort(-a)]
# 结果为array([0.9, 0.8, 0.2, 0.1])

猜你喜欢

转载自blog.csdn.net/henbile/article/details/86138728
今日推荐