一、前言
最近写NLP有关代码,总会使用NumPy中的知识。索性开个新专栏,用于记录改三方库下的学习积累。
二、官方文档
三、一言以蔽之
参数:
a:传入的待排序数组
axis(int型,可选填)
把第axis轴对数组进行排序。
默认为-1,为最后一个轴。
如果没有该参数,则展平数组a。
重点
维数 | axis=-1时所代表的轴 |
---|---|
一维数组只有0轴 | 0轴 |
二维数组有0、1轴 | 1轴 |
··· | ··· |
递推:N维数组有[0,N-1]个轴 | N-1轴 |
总结:0轴是列方向,1轴是行方向
kind
使用kind=‘quicksort’ (默认)指定的算法沿给定的轴进行排序。
或者可选使用kind='mergesort’(归并排序)和kind=‘heapsort’(堆排序)
order(str/str列表型,可选填)
如果数组a是定义了字段的数组(str或者str列表),这个参数会指定比较前两个参数的某些字段。可以把单个的字段指定为字符串(不一定是所有字段),但是会仍在数据类型(dtype)中出现的顺序使用剩下未指定的字段来打破关系。
返回值
它返回一个与 数组a形状相同的索引数组,该数组以排序顺序沿给定轴索引数据。
如果数组a是一维的话,会得到一个排好序的数组。
四、代码案例
# 一维数组案例
import numpy as np
x = np.array([6,4,5])
z = np.argsort(x)
print(np.argsort(x))
print(x[z])
'''
np.argsort(x): [1 2 0] # 数组中数据的序号
x: [4 5 6] # 数组中的数据
'''
# 二维数组案例
import numpy as np
y = np.array([[7,10],
[9,8]])
z1 = np.argsort(y,axis=-1) # 因为是二维数组,所以-1位最后一轴(即1轴)旋转
z2 = np.argsort(y,axis=0) # 沿0轴旋转
z3 = np.argsort(y,axis=1) # 沿1轴(当前轴)旋转
print(np.argsort(y))
print('y[z1]:',y[z1])
print('y[z2]):',y[z2])
print('y[z3]):',y[z3])
'''
np.argsort(y): [[0 1] 对应着[ [7,10]
[1 0]] [8,9] ]
y[z1]: [ # 沿着-1轴旋转
[ [ 7 10]
[ 9 8] ]
[ [ 9 8]
[ 7 10] ]
]
y[z2]): [ 沿着第0轴旋转
[ [ 7 10]
[ 9 8] ]
[ [ 9 8]
[ 7 10] ]
]
y[z3]): [
[ [ 7 10]
[ 9 8] ]
[ [ 9 8]
[ 7 10] ]
]
'''