07.Python代碼NumPy-排序sort,argsort,lexsort
提示:幫幫志會陸續更新非常多的IT技術知識,希望分享的內容對您有用。本章分享的是NumPy的使用語法。前后每一小節的內容是存在的有:學習and理解的關聯性,希望對您有用~
python語法-numPy 第七節 :排序sort,argsort,lexsort
上一小節詳細分享了通過索引或切片來訪問和修改 。本小節可能會用到取值。如暈,可查:
通過索引或切片來訪問和修改
文章目錄
- 07.Python代碼NumPy-排序sort,argsort,lexsort
- 排序
- 排序 sort
- 指定排序的列和按字母順序排序 sort
- 獲得索引 argsort
- 按列排序 lexsort
排序
排序 sort
用于完成數組的排序,語法:
numpy.sort(arr, axis, kind, order)
arr: 要排序的數組
axis: 沿著它排序數組的軸,如果沒有數組會被展開,沿著最后的軸排序, axis=0 按列排序,axis=1 按行排序
kind: 默認為’quicksort’(快速排序)
order: 如果數組包含字段,則是要排序的字段
kind:
quicksort’(快速排序)
‘mergesort’(歸并排序)
‘heapsort’(堆排序)
import numpy as np#隨意定義數組
a = np.array([[5, 9], [10, 2]])
print(a)#輸出瞅一眼
#排序后
print(np.sort(a))#就是數字小的放前面,啥是前面,下標索引小就是前面,下標0就是最前唄
print()#啥也不輸出,空一行
#axis=0 就是按列來排 豎著
print(np.sort(a, axis=0))
#axis=1 就是按行來排 橫著
print(np.sort(a, axis=1))#索引取值及切片,前面章節分享了。可以在文章開頭點擊
指定排序的列和按字母順序排序 sort
復合類型,指定排序的列。且按字母排序
#定義一個dtype數據類型,字符串的name int的age
dt = np.dtype([('name', 'S10'),('age', int)])
#聲明一個數組,dtype=dt 指定數據類型是dt
a = np.array([("apple", 21), ("tom", 17), ("jack", 27), ("bbz", 25)], dtype=dt)
#瞅一眼
print (a)
#按列排序:order = 列名
print ('按 name 排序:')
print (np.sort(a, order = 'name'))
獲得索引 argsort
用于得到排序后的數組的索引值。它返回的不是數據本身,而是排序后的索引組成的數組
所以,有時重點不再數據本身上。可以通過它直接用索引就行。
import numpy as npx = np.array([3, 1, 2])
#瞅一眼
print(x)
#返回排序后的索引。交給變量y
y = np.argsort(x)
print(y)#[1 2 0] 這個是索引
#通過y來取值,look look 排序后的數組
print(x[y])
按列排序 lexsort
返回下標索引
對多個序列進行排序,語法:先指定一個列排序,如果這個列有數據相同的,就按照第二個列來排序,如果第二個列又有數據相同的,就按照。。。。
指定多少個列或者哪個先排哪個后排,傳遞不同參數就好了,語法:
ind = np.lexsort((列n,列03,列02,列01))
越寫到后面的列越先排:先排列01,在列02,
如:第一個數字就是按照需要最先排序的列,最小的那個數據,返回這個數據的索引
#定義一組數據
name = ('bangbangzhi','apple','abandon','bbz','hello')
#在定義一組數據
age = (12, 18, 12, 20,15)
#他們兩組數據是 我需要組合起來的:
#bangbangzhi,12 apple,18 abandon,12 。。。。
#組合出來之后,希望排好序:#得到一個索引
ind = np.lexsort((name,age)) #先age(大小) 相同就name(字母順序)
print (ind)#[2 0 4 1 3] ===》 2 第三個,12的年齡及a打頭的name
print ([name[i] + ", " + str(age[i]) for i in ind]) #取出ind里面的索引拼接好組合的數據
(會陸續更新非常多的IT技術知識及泛IT的電商知識,可以點個關注,共同交流。比心)