【numpy筆記_10】統(tǒng)計運算玫芦、排序和搜索

今天講一下numpy中一些常規(guī)的數(shù)據(jù)統(tǒng)計功能浆熔,以及如何操作數(shù)組的排序和搜索。

這些在實際的數(shù)據(jù)分析場景經(jīng)中常常用到桥帆。


統(tǒng)計操作

還是把常用的方法匯總一個表:

功能 方法 說明
數(shù)組求和 object.sum() 計算一個數(shù)組的元素之和
求平均數(shù) object.mean() 計算一個數(shù)組的元素平均值
求方差 object.var() 計算一個數(shù)組的元素方差值
求標準差 object.std() 計算一個數(shù)組的元素方差值
求極差 object.ptp() 計算一個數(shù)組極大值和極小值之差
求中位數(shù) np.median(a) 計算一個數(shù)組的元素中位數(shù)
求最大值 object.max() 計算一個數(shù)組的元素最大值
求中位數(shù) object.min() 計算一個數(shù)組的元素最大值
import numpy as np

arr = np.arange(10)
print('arr數(shù)組的和為:', arr.sum())
print('arr數(shù)組的平均值為:', arr.mean())
print('arr數(shù)組的方差為:', arr.var())
print('arr數(shù)組的標準差為:', arr.std())
print('arr數(shù)組的極差為:', arr.ptp())
print('arr數(shù)組的中位數(shù)為:', np.median(a=arr))
# 運算結(jié)果:
arr數(shù)組的和為: 45
arr數(shù)組的平均值為: 4.5
arr數(shù)組的方差為: 8.25
arr數(shù)組的標準差為: 2.8722813232690143
arr數(shù)組的極差為: 9
arr數(shù)組的中位數(shù)為: 4.5


arr = np.arange(10).reshape((2,5))
print('arr數(shù)組:\n', arr)
print('arr數(shù)組每列的最大元素為:', arr.max(axis=1))
print('arr數(shù)組的最小元素為:', arr.min())
# 運算結(jié)果:
arr數(shù)組:
 [[0 1 2 3 4]
 [5 6 7 8 9]]
arr數(shù)組每列的最大元素為: [4 9]
arr數(shù)組的最小元素為: 0
以上的統(tǒng)計方法中還有一些可選參數(shù)蘸拔。

如axis、dtype等通用參數(shù)环葵,或不同統(tǒng)計方法特定的可選參數(shù)等,用以實現(xiàn)更加精細的計算宝冕。

因為理解起來很容易张遭,這里不再展開細講。感興趣的可以百度地梨,或查看方法的源代碼菊卷。

  • pycharm查看某個方法的源碼:按住ctrl左鍵單擊該方法。

排序操作

主要介紹兩個排序方法:

np.sort()宝剖,返回排序后的數(shù)組

sort()方法有幾個參數(shù)了解一下:

  • a=洁闰, 指定排序的數(shù)組
  • axis=, 指定排序的軸
  • kind=万细,指定排序的算法
    kind參數(shù)選擇不同的算法扑眉,其速度、復雜度赖钞、穩(wěn)定性等有一定差別腰素。從網(wǎng)上找了個介紹,了解一下即可:
kind參數(shù) 速度 最壞復雜度 工作空間 穩(wěn)定性
kind='quicksort' 1 O(n^2) 0
kind='quicksort' 2 O(n*log(n) 0-(n/2)
kind='quicksort' 3 O(n*log(n) 0
  • order=雪营,指定排序的字段(用于前面講過的結(jié)構(gòu)化數(shù)組)
import numpy as np

arr = np.random.randint(1,50,24).reshape((3,2,4))   # 1-49弓千,隨機生成24個元素,構(gòu)建(3,2,4)數(shù)組
sort_arr = np.sort(a=arr, axis=2, kind='mergesort')  # 塊献起、行不變洋访,按列排序
print('arr數(shù)組:\n', arr)
print('排序后:\n', sort_arr)
# 運算結(jié)果:
arr數(shù)組:
 [[[24 40 47 38]
  [37 10 27 11]]

 [[ 7 17  2 26]
  [24 41 42  6]]

 [[32 22  4 37]
  [13 48  7 16]]]
排序后:
 [[[24 38 40 47]
  [10 11 27 37]]

 [[ 2  7 17 26]
  [ 6 24 41 42]]

 [[ 4 22 32 37]
  [ 7 13 16 48]]]

np.argsort(),返回排序后的索引值

import numpy as np

arr = np.random.randint(1,50,12)  # 1-49谴餐,隨機生成24個元素
sort_arr = np.argsort(a=arr)
print('arr數(shù)組:\n', arr)
print('排序后的索引:\n', sort_arr)
print('根據(jù)索引查找排序后的數(shù)組為:\n', arr[sort_arr])
# 運算結(jié)果:
arr數(shù)組:
 [48 39 30 41 39 12 33  4 20 15 30 27]
排序后:
 [ 7  5  9  8 11  2 10  6  1  4  3  0]
根據(jù)索引查找排序后的數(shù)組為:
 [ 4 12 15 20 27 30 30 33 39 39 41 48]

搜索

常用有以下搜索的方法:

功能 方法
查找滿足條件的元素的索引坐標 np.argwhere('條件')
查找滿足條件的元素的索引值 np.where('條件')
查找非零元素的索引坐標 np.nonzero()
查找最大元素的索引坐標 np.argmax()
import numpy as np

arr = np.arange(12).reshape(3,4)
print('arr數(shù)組:\n', arr)
print('滿足條件的元素坐標:\n', np.argwhere(arr > 5))   # argwhere返回索引坐標
print('滿足條件的元素索引值:\n', np.where(arr > 5))   # where返回索引值姻政。由于是二維的,返回行和列兩組索引值总寒,其索引一一對應
print('非零元素的索引值:\n', np.nonzero(arr))
print('數(shù)組元素最大值的索引坐標為:\n', np.argmax(arr))   # 把數(shù)組攤平后返回索引坐標
print('數(shù)組元素最小值的索引坐標為:\n', np.argmin(arr))   # 把數(shù)組攤平后返回索引坐標

# 提取數(shù)組中滿足某個條件的元素的方法:
print('數(shù)組中的元素是否大于5:\n', arr > 5)   # 指定一個條件
print('大于5的元素有:\n', arr[arr > 5])   # 提取bool對應的元素值
# 運算結(jié)果:
arr數(shù)組:
 [[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
滿足條件的元素坐標:
 [[1 2]
 [1 3]
 [2 0]
 [2 1]
 [2 2]
 [2 3]]
滿足條件的元素索引值:
 (array([1, 1, 2, 2, 2, 2], dtype=int64), array([2, 3, 0, 1, 2, 3], dtype=int64))
非零元素的索引值:
 (array([0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2], dtype=int64), array([1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3], dtype=int64))
數(shù)組元素最大值的索引坐標為:
 11
數(shù)組元素最小值的索引坐標為:
 0
數(shù)組中的元素是否大于5:
 [[False False False False]
 [False False  True  True]
 [ True  True  True  True]]
大于5的元素有:
 [ 6  7  8  9 10 11]
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末扶歪,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌善镰,老刑警劉巖妹萨,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異炫欺,居然都是意外死亡乎完,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進店門品洛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來树姨,“玉大人,你說我怎么就攤上這事桥状∶本荆” “怎么了?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵辅斟,是天一觀的道長转晰。 經(jīng)常有香客問我,道長士飒,這世上最難降的妖魔是什么查邢? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮酵幕,結(jié)果婚禮上扰藕,老公的妹妹穿的比我還像新娘。我一直安慰自己芳撒,他們只是感情好邓深,可當我...
    茶點故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著番官,像睡著了一般庐完。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上徘熔,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天门躯,我揣著相機與錄音,去河邊找鬼酷师。 笑死讶凉,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的山孔。 我是一名探鬼主播懂讯,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼台颠!你這毒婦竟也來了褐望?” 一聲冷哼從身側(cè)響起勒庄,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎瘫里,沒想到半個月后实蔽,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡谨读,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年局装,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片劳殖。...
    茶點故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡铐尚,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出哆姻,到底是詐尸還是另有隱情宣增,我是刑警寧澤,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布矛缨,位于F島的核電站统舀,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏劳景。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一碉就、第九天 我趴在偏房一處隱蔽的房頂上張望盟广。 院中可真熱鬧,春花似錦瓮钥、人聲如沸筋量。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽桨武。三九已至,卻和暖如春锈津,著一層夾襖步出監(jiān)牢的瞬間呀酸,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工琼梆, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留性誉,地道東北人。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓茎杂,卻偏偏與公主長得像错览,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子煌往,可洞房花燭夜當晚...
    茶點故事閱讀 43,472評論 2 348

推薦閱讀更多精彩內(nèi)容