在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ 數(shù)據(jù)分析&挖掘/ NumPy排序、搜索和計(jì)數(shù)函數(shù)
NumPy位操作
NumPy數(shù)學(xué)算數(shù)函數(shù)
NumPy高級(jí)索引
NumPy環(huán)境安裝配置
NumPy IO文件操作
NumPy字符串函數(shù)
NumPy切片和索引
NumPy統(tǒng)計(jì)函數(shù)
NumPy矩陣庫(kù)
NumPy數(shù)組創(chuàng)建例程
NumPy線性代數(shù)
NumPy Matplotlib庫(kù)
NumPy教程
NumPy排序、搜索和計(jì)數(shù)函數(shù)
NumPy字節(jié)交換
NumPy Ndarray對(duì)象
NumPy數(shù)組操作
NumPy使用 Matplotlib 繪制直方圖
NumPy數(shù)組屬性
NumPy廣播
NumPy來(lái)自現(xiàn)有數(shù)據(jù)的數(shù)組
NumPy副本和視圖
NumPy在數(shù)組上的迭代
NumPy來(lái)自數(shù)值范圍的數(shù)組
NumPy算數(shù)運(yùn)算
NumPy數(shù)據(jù)類型

NumPy排序、搜索和計(jì)數(shù)函數(shù)

NumPy - 排序、搜索和計(jì)數(shù)函數(shù)

NumPy中提供了各種排序相關(guān)功能。 這些排序函數(shù)實(shí)現(xiàn)不同的排序算法,每個(gè)排序算法的特征在于執(zhí)行速度,最壞情況性能,所需的工作空間和算法的穩(wěn)定性。 下表顯示了三種排序算法的比較。

種類 速度 最壞情況 工作空間 穩(wěn)定性
'quicksort'(快速排序) 1 O(n^2) 0
'mergesort'(歸并排序) 2 O(n*log(n)) ~n/2
'heapsort'(堆排序) 3 O(n*log(n)) 0

numpy.sort()

sort()函數(shù)返回輸入數(shù)組的排序副本。 它有以下參數(shù):

numpy.sort(a, axis, kind, order)

其中:

序號(hào) 參數(shù)及描述
1. a 要排序的數(shù)組
2. axis 沿著它排序數(shù)組的軸,如果沒(méi)有數(shù)組會(huì)被展開(kāi),沿著最后的軸排序
3. kind 默認(rèn)為'quicksort'(快速排序)
4. order 如果數(shù)組包含字段,則是要排序的字段

示例

import numpy as np  
a = np.array([[3,7],[9,1]])  
print  '我們的數(shù)組是:'  
print a 
print  '\n'  
print  '調(diào)用 sort() 函數(shù):'  
print np.sort(a)  
print  '\n'  
print  '沿軸 0 排序:'  
print np.sort(a, axis =  0)  
print  '\n'  
# 在 sort 函數(shù)中排序字段 
dt = np.dtype([('name',  'S10'),('age',  int)]) 
a = np.array([("raju",21),("anil",25),("ravi",  17),  ("amar",27)], dtype = dt)  
print  '我們的數(shù)組是:'  
print a 
print  '\n'  
print  '按 name 排序:'  
print np.sort(a, order =  'name')

輸出如下:

我們的數(shù)組是:
[[3 7]
 [9 1]]

調(diào)用 sort() 函數(shù):
[[3 7]
 [1 9]]

沿軸 0 排序:
[[3 1]
 [9 7]]

我們的數(shù)組是:
[('raju', 21) ('anil', 25) ('ravi', 17) ('amar', 27)]

按 name 排序:
[('amar', 27) ('anil', 25) ('raju', 21) ('ravi', 17)]

numpy.argsort()

numpy.argsort()函數(shù)對(duì)輸入數(shù)組沿給定軸執(zhí)行間接排序,并使用指定排序類型返回?cái)?shù)據(jù)的索引數(shù)組。 這個(gè)索引數(shù)組用于構(gòu)造排序后的數(shù)組。

示例

import numpy as np 
x = np.array([3,  1,  2])  
print  '我們的數(shù)組是:'  
print x 
print  '\n'  
print  '對(duì) x 調(diào)用 argsort() 函數(shù):' 
y = np.argsort(x)  
print y 
print  '\n'  
print  '以排序后的順序重構(gòu)原數(shù)組:'  
print x[y]  
print  '\n'  
print  '使用循環(huán)重構(gòu)原數(shù)組:'  
for i in y:  
    print x[i],

輸出如下:

我們的數(shù)組是:
[3 1 2]

對(duì) x 調(diào)用 argsort() 函數(shù):
[1 2 0]

以排序后的順序重構(gòu)原數(shù)組:
[1 2 3]

使用循環(huán)重構(gòu)原數(shù)組:
1 2 3

numpy.lexsort()

函數(shù)使用鍵序列執(zhí)行間接排序。 鍵可以看作是電子表格中的一列。 該函數(shù)返回一個(gè)索引數(shù)組,使用它可以獲得排序數(shù)據(jù)。 注意,最后一個(gè)鍵恰好是 sort 的主鍵。

示例

import numpy as np 

nm =  ('raju','anil','ravi','amar') 
dv =  ('f.y.',  's.y.',  's.y.',  'f.y.') 
ind = np.lexsort((dv,nm))  
print  '調(diào)用 lexsort() 函數(shù):'  
print ind 
print  '\n'  
print  '使用這個(gè)索引來(lái)獲取排序后的數(shù)據(jù):'  
print  [nm[i]  +  ", "  + dv[i]  for i in ind]

輸出如下:

調(diào)用 lexsort() 函數(shù):
[3 1 0 2]

使用這個(gè)索引來(lái)獲取排序后的數(shù)據(jù):
['amar, f.y.', 'anil, s.y.', 'raju, f.y.', 'ravi, s.y.']

NumPy 模塊有一些用于在數(shù)組內(nèi)搜索的函數(shù)。 提供了用于找到最大值,最小值以及滿足給定條件的元素的函數(shù)。

numpy.argmax()numpy.argmin()

這兩個(gè)函數(shù)分別沿給定軸返回最大和最小元素的索引。

示例

import numpy as np 
a = np.array([[30,40,70],[80,20,10],[50,90,60]])  
print  '我們的數(shù)組是:'  
print a 
print  '\n'  
print  '調(diào)用 argmax() 函數(shù):'  
print np.argmax(a)  
print  '\n'  
print  '展開(kāi)數(shù)組:'  
print a.flatten()  
print  '\n'  
print  '沿軸 0 的最大值索引:' 
maxindex = np.argmax(a, axis =  0)  
print maxindex 
print  '\n'  
print  '沿軸 1 的最大值索引:' 
maxindex = np.argmax(a, axis =  1)  
print maxindex 
print  '\n'  
print  '調(diào)用 argmin() 函數(shù):' 
minindex = np.argmin(a)  
print minindex 
print  '\n'  
print  '展開(kāi)數(shù)組中的最小值:'  
print a.flatten()[minindex]  
print  '\n'  
print  '沿軸 0 的最小值索引:' 
minindex = np.argmin(a, axis =  0)  
print minindex 
print  '\n'  
print  '沿軸 1 的最小值索引:' 
minindex = np.argmin(a, axis =  1)  
print minindex

輸出如下:

我們的數(shù)組是:
[[30 40 70]
 [80 20 10]
 [50 90 60]]

調(diào)用 argmax() 函數(shù):
7

展開(kāi)數(shù)組:
[30 40 70 80 20 10 50 90 60]

沿軸 0 的最大值索引:
[1 2 0]

沿軸 1 的最大值索引:
[2 0 1]

調(diào)用 argmin() 函數(shù):
5

展開(kāi)數(shù)組中的最小值:
10

沿軸 0 的最小值索引:
[0 1 1]

沿軸 1 的最小值索引:
[0 2 0]

numpy.nonzero()

numpy.nonzero()函數(shù)返回輸入數(shù)組中非零元素的索引。

示例

import numpy as np 
a = np.array([[30,40,0],[0,20,10],[50,0,60]])  
print  '我們的數(shù)組是:'  
print a 
print  '\n'  
print  '調(diào)用 nonzero() 函數(shù):'  
print np.nonzero (a)

輸出如下:

我們的數(shù)組是:
[[30 40 0]
 [ 0 20 10]
 [50 0 60]]

調(diào)用 nonzero() 函數(shù):
(array([0, 0, 1, 1, 2, 2]), array([0, 1, 1, 2, 0, 2]))

numpy.where()

where()函數(shù)返回輸入數(shù)組中滿足給定條件的元素的索引。

示例

import numpy as np 
x = np.arange(9.).reshape(3,  3)  
print  '我們的數(shù)組是:'  
print x 
print  '大于 3 的元素的索引:' 
y = np.where(x >  3)  
print y 
print  '使用這些索引來(lái)獲取滿足條件的元素:'  
print x[y]

輸出如下:

我們的數(shù)組是:
[[ 0. 1. 2.]
 [ 3. 4. 5.]
 [ 6. 7. 8.]]

大于 3 的元素的索引:
(array([1, 1, 2, 2, 2]), array([1, 2, 0, 1, 2]))

使用這些索引來(lái)獲取滿足條件的元素:
[ 4. 5. 6. 7. 8.]

numpy.extract()

extract()函數(shù)返回滿足任何條件的元素。

import numpy as np 
x = np.arange(9.).reshape(3,  3)  
print  '我們的數(shù)組是:'  
print x 
# 定義條件 
condition = np.mod(x,2)  ==  0  
print  '按元素的條件值:'  
print condition 
print  '使用條件提取元素:'  
print np.extract(condition, x)

輸出如下:

我們的數(shù)組是:
[[ 0. 1. 2.]
 [ 3. 4. 5.]
 [ 6. 7. 8.]]

按元素的條件值:
[[ True False True]
 [False True False]
 [ True False True]]

使用條件提取元素:
[ 0. 2. 4. 6. 8.]