numpy 有多种排序方法。

 

sort

sort(self, axis=-1, kind='quicksort', order=None):排完序后改变原值  【只有这个方法改变原值】

axis : int, optional
                Axis along which to sort. Default is -1, which means sort along the
                last axis.
kind : {'quicksort', 'mergesort', 'heapsort', 'stable'}, optional
                Sorting algorithm. Default is 'quicksort'.
order : str or list of str, optional
                When `a` is an array with fields defined, this argument specifies
                which fields to compare first, second, etc.  A single field can
                be specified as a string, and not all fields need be specified,
                but unspecified fields will still be used, in the order in which
                they come up in the dtype, to break ties.

示例

a=np.arange(1,5)
print(a)    # [1 2 3 4]

a.sort()
print(a)    # [1 2 3 4]

b=np.array([[1,5,3],[4,2,7]])
b.sort()
print(b)    # [[1 3 5]
              # [2 4 7]]
b=np.array([[1,5,3],[4,2,7]])
b.sort(axis=0, kind='quicksort')
print(b)        # [[1 2 3]
                  # [4 5 7]]

# b=np.array([[1,5,3],[4,2,7]])
# b.sort(axis=0,kind='quicksort',order=None)
# print(b)

# 参数:
# axis=0 表示按列 1 表示按行;默认是1按行排序
# kind 排序的算法,提供了快排(quicksort)、混排、堆排

 

np.sort

sort(a, axis=-1, kind='quicksort', order=None):用法同 sort,但是不改变原值

c=np.array([[1,5,3],[4,2,7]])
print(np.sort(c))   # [[1 3 5]
                    # [2 4 7]]
print(np.sort(c,axis=0))    # [[1 2 3]
                             # [4 5 7]]

print(c)        # [[1 5 3]      原值没变
                 # [4 2 7]]

 

np.argsort

argsort(self, axis=-1, kind='quicksort', order=None):返回排序后的索引

# 一维数组
data5 = np.array([1, 5, 3])
print data5.argsort()            # [0 2 1]  升序
print np.argsort(data5)          # [0 2 1]
print np.argsort(-data5)         # [1 2 0]  降序


# 二维数组
data6 = np.array([[1,2,3],[4,5,6],[0,0,1]])
# [[1 2 3]
#  [4 5 6]
#  [0 0 1]]
print np.argsort(data6, axis=1)   # 按行排序
# [[0 1 2]
#  [0 1 2]
#  [0 1 2]]
print np.argsort(data6, axis=0)    # 按列排序
# [[2 2 2]
#  [0 0 0]
#  [1 1 1]]

a_arg = np.argsort(data6[:,1])  # 按第'1'列排序
print a_arg                     # [2 0 1]   第2个排1,第0个排2,第1个排3
a = data6[a_arg]
print a
# [[0 0 1]
#  [1 2 3]
#  [4 5 6]]