直接排序和间接排序,直接排序指对数值直接进行排序,间接排序是指根据一个或多个键对数据集进行排序。直接排序使用sort函数,间接排序使用argsort函数和lexsort函数。
sort
利用sort进行排序时会破坏原有数组的元素之间的相对位置。
>>> a = np.array([[1,4], [3,1]])
>>> a.sort(axis=1)
>>> a
array([[1, 4],
[1, 3]])
>>> a.sort(axis=0)
>>> a
array([[1, 3],
[1, 4]])
Use the `order` keyword to specify a field to use when sorting a structured array:
>>> a = np.array([('a', 2), ('c', 1)], dtype=[('x', 'S1'), ('y', int)])
>>> a.sort(order='y')
>>> a
array([(b'c', 1), (b'a', 2)],
dtype=[('x', 'S1'), ('y', '<i8')])
argsort
arr = np.array([2, 3, 6, 8, 0, 7])
arr.argsort()
[4 0 1 2 5 3]
lexsort
lexsort函数可以一次性对满足多个键的数组执行间接排序。lexsort函数只接受一个参数,多个键值排序时是按照最后一个传入数据计算的。
a = np.array([3, 2, 6, 4, 5])
b = np.array([50, 30, 40, 20, 10])
c = np.array([400, 300, 600, 100, 200])
d = np.lexsort((a, b, c))
print(d)
[3 4 1 0 2]
|