Python Numpy教程之排序,搜索和計(jì)數(shù)詳解
排序
排序是指以特定格式排列數(shù)據(jù)。排序算法指定以特定順序排列數(shù)據(jù)的方式。最常見的順序是數(shù)字或字典順序。在 Numpy 中,我們可以使用庫(kù)中提供的各種函數(shù)(如 sort、lexsort、argsort 等)執(zhí)行各種排序操作。
numpy.sort(): 此函數(shù)返回?cái)?shù)組的排序副本。
# 導(dǎo)入庫(kù)
import numpy as np
# 沿第一軸排序
a = np.array([[12, 15], [10, 1]])
arr1 = np.sort(a, axis = 0)
print ("Along first axis : \n", arr1)
# 沿最后一個(gè)軸排序
a = np.array([[10, 15], [12, 1]])
arr2 = np.sort(a, axis = -1)
print ("\nAlong first axis : \n", arr2)
a = np.array([[12, 15], [10, 1]])
arr1 = np.sort(a, axis = None)
print ("\nAlong none axis : \n", arr1)
輸出 :
Along first axis :
[[10 1]
[12 15]]
Along first axis :
[[10 15]
[ 1 12]]
Along none axis :
[ 1 10 12 15]
numpy.argsort(): 此函數(shù)返回將對(duì)數(shù)組進(jìn)行排序的索引。
# 演示 numpy.argsort 工作的 Python 代碼
import numpy as np
# 已創(chuàng)建 Numpy 數(shù)組
a = np.array([9, 3, 1, 7, 4, 3, 6])
# 未排序的數(shù)組打印
print('Original array:\n', a)
# 排序數(shù)組索引
b = np.argsort(a)
print('Sorted indices of original array->', b)
# 要使用排序索引獲取排序數(shù)組 c 是由與 b 相同的 len 創(chuàng)建的臨時(shí)數(shù)組
c = np.zeros(len(b), dtype = int)
for i in range(0, len(b)):
c[i]= a[b[i]]
print('Sorted array->', c)
在 IDE 上運(yùn)行
輸出:
Original array:
[9 3 1 7 4 3 6]
Sorted indices of original array-> [2 1 5 4 6 3 0]
Sorted array-> [1 3 3 4 6 7 9]
numpy.lexsort(): 此函數(shù)使用一系列鍵返回間接穩(wěn)定排序。
# 演示 numpy.lexsort() 工作的 Python 代碼
import numpy as np
# numpy數(shù)組創(chuàng)建第一列
a = np.array([9, 3, 1, 3, 4, 3, 6])
# 第二欄
b = np.array([4, 6, 9, 2, 1, 8, 7])
print('column a, column b')
for (i, j) in zip(a, b):
print(i, ' ', j)
# 按 a 然后按 b 排序
ind = np.lexsort((b, a))
print('Sorted indices->', ind)
輸出 :
column a, column b
9 4
3 6
1 9
3 2
4 1
3 8
6 7
Sorted indices-> [2 3 1 5 4 6 0]
| 功能 | 描述 |
|---|---|
| numpy.ndarray.sort() | 就地對(duì)數(shù)組進(jìn)行排序。 |
| numpy.msort() | 返回沿第一個(gè)軸排序的數(shù)組的副本。 |
| numpy.sort_complex() | 首先使用實(shí)部對(duì)復(fù)數(shù)數(shù)組進(jìn)行排序,然后使用虛部。 |
| numpy.partition() | 返回?cái)?shù)組的分區(qū)副本。 |
| numpy.argpartition() | 使用 kind 關(guān)鍵字指定的算法沿給定軸執(zhí)行間接分區(qū)。 |
搜索
搜索是一種操作或技術(shù),可幫助查找給定元素或值在列表中的位置。根據(jù)是否找到正在搜索的元素,任何搜索都被稱為成功或不成功。在 Numpy 中,我們可以使用庫(kù)中提供的各種函數(shù)(如 argmax、argmin、nanaargmax 等)執(zhí)行各種搜索操作。
numpy.argmax(): 此函數(shù)返回特定軸中數(shù)組的最大元素的索引。
# 說明 argmax() 工作的 Python 程序
import numpy as geek
# 處理二維數(shù)組
array = geek.arange(12).reshape(3, 4)
print("INPUT ARRAY : \n", array)
# 沒有提到軸,所以適用于整個(gè)陣列
print("\nMax element : ", geek.argmax(array))
# 根據(jù)索引返回最大元素的索引
print(("\nIndices of Max element : "
, geek.argmax(array, axis=0)))
print(("\nIndices of Max element : "
, geek.argmax(array, axis=1)))
輸出 :
INPUT ARRAY :
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
Max element : 11
Indices of Max element : [2 2 2 2]
Indices of Max element : [3 3 3]
numpy.nanargmax(): 此函數(shù)返回忽略 NaN 的特定軸中數(shù)組的最大元素的索引。如果切片僅包含 NaN 和 Infs,則結(jié)果不可信。
# 說明 nanargmax() 工作的 Python 程序
import numpy as geek
# 處理一維數(shù)組
array = [geek.nan, 4, 2, 3, 1]
print("INPUT ARRAY 1 : \n", array)
array2 = geek.array([[geek.nan, 4], [1, 3]])
# 根據(jù)忽略 NaN 的索引返回最大元素的索引
print(("\nIndices of max in array1 : "
, geek.nanargmax(array)))
# 處理二維數(shù)組
print("\nINPUT ARRAY 2 : \n", array2)
print(("\nIndices of max in array2 : "
, geek.nanargmax(array2)))
print(("\nIndices at axis 1 of array2 : "
, geek.nanargmax(array2, axis = 1)))
輸出 :
INPUT ARRAY 1 :
[nan, 4, 2, 3, 1]
Indices of max in array1 : 1
INPUT ARRAY 2 :
[[ nan 4.]
[ 1. 3.]]
Indices of max in array2 : 1
Indices at axis 1 of array2 : [1 1]
numpy.argmin(): 此函數(shù)返回沿軸的最小值的索引。
# 說明 argmin() 工作的 Python 程序
import numpy as geek
# 處理一維數(shù)組
array = geek.arange(8)
print("INPUT ARRAY : \n", array)
# 根據(jù)索引返回 min 元素的索引
print("\nIndices of min element : ", geek.argmin(array, axis=0))
在 IDE 上運(yùn)行
輸出 :
INPUT ARRAY :
[0 1 2 3 4 5 6 7]
Indices of min element : 0
| 功能 | 描述 |
|---|---|
| numpy.nanargmin() | 返回指定軸中最小值的索引,忽略 NaN。 |
| numpy.argwhere() | 查找按元素分組的非零數(shù)組元素的索引。 |
| numpy.nonzero() | 返回非零元素的索引。 |
| numpy.flatnonzero() | 在 a 的扁平化版本中返回非零索引。 |
| numpy.where() | 根據(jù)條件返回從 x 或 y 中選擇的元素。 |
| numpy.searchsorted() | 查找應(yīng)插入元素以保持順序的索引。 |
| numpy.extract() | 返回滿足某個(gè)條件的數(shù)組元素。 |
Counting
numpy.count_nonzero() :計(jì)算數(shù)組中非零值的數(shù)量。
# 說明 count_nonzero() 工作的 Python 程序
import numpy as np
# 計(jì)算多個(gè)非零值
a = np.count_nonzero([[0,1,7,0,0],[3,0,0,2,19]])
b = np.count_nonzero(([[0,1,7,0,0],[3,0,0,2,19]]
, axis=0))
print("Number of nonzero values is :",a)
print("Number of nonzero values is :",b)
在 IDE 上運(yùn)行
輸出 :
Number of nonzero values is : 5
Number of nonzero values is : [1, 1, 1, 1, 1]
到此這篇關(guān)于Python Numpy教程之排序,搜索和計(jì)數(shù)詳解的文章就介紹到這了,更多相關(guān)Python Numpy內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python工具快速為音視頻自動(dòng)生成字幕(使用說明)
這篇文章主要介紹了python工具快速為音視頻自動(dòng)生成字幕(使用說明),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01
python?matplotlib實(shí)現(xiàn)條形圖的填充效果
這篇文章主要為大家詳細(xì)介紹了python?matplotlib實(shí)現(xiàn)條形圖的填充效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04
淺談Pytorch中的自動(dòng)求導(dǎo)函數(shù)backward()所需參數(shù)的含義
今天小編就為大家分享一篇淺談Pytorch中的自動(dòng)求導(dǎo)函數(shù)backward()所需參數(shù)的含義,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-02-02
2023年最新版Python?3.12.0安裝使用指南(推薦!)
這篇文章主要給大家介紹了關(guān)于2023年最新版Python?3.12.0安裝使用的相關(guān)資料,Python?現(xiàn)在是非常流行的編程語言,當(dāng)然并不是說Python語言性能多么強(qiáng)大,而是Python使用非常方便,特別是現(xiàn)在AI和大數(shù)據(jù)非常流行,用?Python?實(shí)現(xiàn)是非常容易的,需要的朋友可以參考下2023-10-10
python實(shí)現(xiàn)簡(jiǎn)單的五子棋游戲
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)簡(jiǎn)單的五子棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-09-09
python項(xiàng)目運(yùn)行導(dǎo)致內(nèi)存越來越大的原因詳析
最近在跑python程序時(shí),出現(xiàn)占用的內(nèi)存不斷增加的情況,下面這篇文章主要給大家介紹了關(guān)于python項(xiàng)目運(yùn)行導(dǎo)致內(nèi)存越來越大的原因詳析,本文通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2022-11-11
對(duì)Python中創(chuàng)建進(jìn)程的兩種方式以及進(jìn)程池詳解
今天小編就為大家分享一篇對(duì)Python中創(chuàng)建進(jìn)程的兩種方式以及進(jìn)程池詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-01-01

