import numpy as np
- 对list使用sort,直接改变list(从小到大,升序)-->[].sort()
>>>a = [3,2,1]
>>>a.sort() ## 作用在a上
>>>a ## 改变了a的值
[1,2,3]
>>>a.sort(reverse = True) ## 从大到小,降序
>>>a
[3,2,1]
-
list中的sorted() ,不会改变原本的list
sorted()也可以作用给array,但返回仍然是list
>>>a = [3,2,1]
>>>sorted(a)
[1,2,3]
>>>a
[3,2,1] ## a 本身并没有发生变化
>>>sorted(a,reverse=True)
[3,2,1] ## 从大到小(降序)
>>>sorted(np.array(a))
[1,2,3]
-
np.sort()
输入给np.sort()的参数可以是array也可以是list
没有改变原本的值
>>>a = [3,2,1]
>>>np.sort(np.array(a))
array([1,2,3])
>>>np.sort(a)
array([1,2,3])
-
np.argsort(a,axis = -1)-->返回数组值从小到大的索引值
例如
>>>x = np.array([3,1,2])
>>>np.argsort(a) #从小到大,按照升序排序
array([1,2,0])
从大到小排序
>>>x = np.array([3,1,2])
>>>np.argsort(-a) # 从大到小,按照降序排序,注意输入必须是np.array,不能是list
array([0,2,1])
>>>x = np.array([[0,3],[2,2]])
>>>np.argsort(a,axis = 0) # axis = 0 代表按列排序
array([[0,1],
[1,0]])
5.两个数组同时排序
题目:有两个数组a,b,要求按照a中元素从小到大的顺序对b进行排序
例如:a=[4,3,5,2,9] , b = ['a','b','c','d','e']
希望输出:['d','b','a','c','e']
>>>sorted_index = np.argsort(a)
>>>list( np.array( b )[sorted_index])
['d','b','a','c','e']
注意:
对于np.array(a = np.array([1,2,3,4,5,6]))
存在 :
a[0] = 1
a[np.array([0,3,5])] = array([1,4,6]) #多个索引,索引需要是array形式