日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Numpy统计计算、数组比较,看这篇就够了

發布時間:2025/3/15 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Numpy统计计算、数组比较,看这篇就够了 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

導讀:工欲善其事,必先利其器。此前,我們在《玩數據必備Python庫:Numpy使用詳解》一文中介紹了利用Numpy進行矩陣運算的方法,本文繼續介紹Numpy的統計計算及其他科學運算的方法。

?

作者:魏溪含 涂銘 張修鵬

來源:大數據DT(ID:bigdatadt)

?

?

?

?

01 Numpy的統計計算方法

?

NumPy內置了很多計算方法,其中最重要的統計方法及說明具體如下。

?

  • sum():計算矩陣元素的和;矩陣的計算結果為一個一維數組,需要指定行或者列。

  • mean():計算矩陣元素的平均值;矩陣的計算結果為一個一維數組,需要指定行或者列。

  • max():計算矩陣元素的最大值;矩陣的計算結果為一個一維數組,需要指定行或者列。

  • mean():計算矩陣元素的平均值。

  • median():計算矩陣元素的中位數。

?

需要注意的是,用于這些統計方法的數值類型必須是int或者float。

?

數組示例代碼如下:

?

vector?=?numpy.array([5,?10,?15,?20]) vector.sum()

?

得到的結果是50

?

矩陣示例代碼如下:

?

matrix= array([[?5,?10,?15],[20,?10,?30],[35,?40,?45]]) matrix.sum(axis=1) array([?30,??60,?120]) matrix.sum(axis=0) array([60,?60,?90])

?

如上述例子所示,axis = 1計算的是行的和,結果以列的形式展示。axis = 0計算的是列的和,結果以行的形式展示。

?

延伸學習:

?

官方推薦教程是不錯的入門選擇。

?

https://docs.scipy.org/doc/numpy-dev/user/quickstart.html

?

?

02 Numpy中的arg運算

?

argmax函數就是用來求一個array中最大值的下標。簡單來說,就是最大的數所對應的索引(位置)是多少。示例代碼如下:

?

index2?=?np.argmax([1,2,6,3,2])????????#返回的是2

?

argmin函數可用于求一個array中最小值的下標,用法與argmax類似。示例代碼如下:

?

index2?=?np.argmin([1,2,6,3,2])?#返回的是0

?

下面我們來探索下Numpy矩陣的排序和如何使用索引,示例代碼如下:

?

import?numpy?as?np x?=?np.arange(15) print(x)????#?array([?0,??1,??2,??3,??4,??5,??6,??7,??8,??9,?10,?11,?12,?13,?14]) np.random.shuffle(x)????#隨機打亂 print(x)????#?array([?8,?13,?12,??3,??9,??2,?10,??0,?11,??5,?14,??7,??1,??4,??6]) sx?=?np.argsort(x)????#從小到大排序,返回索引值 print(sx)????#?[?7?12??5??3?13??9?14?11??0??4??6??8??2??1?10]

?

這里簡單解釋一下,第一個元素7代表的是x向量中的0的索引地址,第二個元素12代表的是x向量中的1的索引地址,其他元素以此類推。

?

?

03 FancyIndexing

?

要索引向量中的一個值是比較容易的,比如通過x[0]來取值。但是,如果想要更復雜地取數,比如,需要返回第3個、第5個以及第8個元素時,應該怎么辦?示例代碼如下:

?

import?numpy?as?np x?=?np.arange(15) ind?=?[3,5,8] print(x[ind])?#使用fancyindexing就可以解決這個問題

?

我們也可以從一維向量中構成新的二維矩陣,示例代碼如下:

?

import?numpy?as?np x?=?np.arange(15) np.random.shuffle(x) ind?=?np.array([[0,2],[1,3]])??#第一行需要取x向量中索引為0的元素,以及索引為2的元素,第二行需要取x向量中索引為1的元素以及索引為3的元素 print(x) print(x[ind])

?

我們來看下輸出結果很容易就能明白了:

?

[?3??2??7?12??9?13?11?14?10??5??4??1??6??8??0] [[?3??7][?2?12]]

?

?

對于二維矩陣,我們使用fancyindexing取數也是比較容易的,示例代碼如下:

?

import?numpy?as?np x?=?np.arange(16) X?=?x.reshape(4,-1) row?=?np.array([0,1,2]) col?=?np.array([1,2,3]) print(X[row,col])????????#相當于取三個點,分別是(0,1),(1,2),(2,3) print(X[1:3,col])????????#相當于取第2、3行,以及需要的列

?

?

04 Numpy數組比較

?

Numpy有一個強大的功能是數組或矩陣的比較,數據比較之后會產生boolean值。示例代碼如下:

?

import?numpy?as?np matrix?=?np.array([[5,?10,?15], [20,?25,?30], [35,?40,?45] ]) m?=?(matrix?==?25) print(m)

?

我們看到輸出的結果如下:

?

[[False?False?False][False??True?False][False?False?False]]

?

下面再來看一個比較復雜的例子,示例代碼如下:

?

import?numpy?as?np matrix?=?np.array([ [5,?10,?15], [20,?25,?30], [35,?40,?45]]) second_column_25?=??(matrix[:,1]?==?25) print(second_column_25) print(matrix[second_column_25,?:])

?

上述代碼中,print(second_column_25)輸出的是[False, True False],首先matrix[:,1]代表的是所有的行,以及索引為1的列,即[10,25,40],最后與25進行比較,得到的就是[False, True, False]。print(matrix[second_column_25, :])代表的是返回true值的那一行數據,即 [20, 25, 30]。

?

注意:上述的示例是單個條件,Numpy也允許我們使用條件符來拼接多個條件,其中“&”代表的是“且”,“|”代表的是“或”。比如,vector=np.array([5,10,11,12]), equal_to_five_and_ten = (vector == 5) & (vector == 10)返回的都是false,如果是equal_to_five_or_ten = (vector == 5) | (vector == 10),則返回的是[True,True,False,False]。

?

比較之后,我們就可以通過np.count_nonzero(x<=3)來計算小于等于3的元素個數了,1代表True,0代表False。也可以通過np.any(x == 0),只要x中有一個元素等于0就返回True。np.all(x>0)則需要所有的元素都大于0才返回True。這一點可以幫助我們判斷x里的數據是否滿足一定的條件。

?

關于作者:魏溪含 ,愛丁堡大學人工智能碩士,阿里巴巴達摩院算法專家,在計算機視覺、大數據領域有8年以上的算法架構和研發經驗。

涂銘,阿里巴巴數據架構師,對大數據、自然語言處理、圖像識別、Python、Java相關技術有深入的研究,積累了豐富的實踐經驗。

張修鵬,畢業于中南大學,阿里巴巴技術發展專家,長期從事云計算、大數據、人工智能與物聯網技術的商業化應用,在阿里巴巴首次將圖像識別技術引入工業,并推動圖像識別產品化、平臺化。

?

本文摘編自《深度學習與圖像識別:原理與實踐》,經出版方授權發布。

?

延伸閱讀《深度學習與圖像識別:原理與實踐》

點擊上圖了解及購買

轉載請聯系微信:DoctorData

?

推薦語:阿里巴巴達摩院算法專家、阿里巴巴技術發展專家、阿里巴巴數據架構師聯合撰寫,從技術原理、算法和工程實踐3個維度系統展開,既適合零基礎讀者快速入門,又適合有基礎讀者理解其核心技術;寫作方式上避開了艱澀的數學公式及其推導,深入淺出。

?

?

「大數據」內容合伙人之「鑒書小分隊」上線啦!

?

最近,你都在讀什么書?有哪些心得體會想要跟大家分享?

?

數據叔最近搞了個大事——聯合優質圖書出版商機械工業出版社華章公司發起鑒書活動。

?

簡單說就是:你可以免費讀新書,你可以免費讀新書的同時,順手碼一篇讀書筆記就行。詳情請在大數據公眾號后臺對話框回復合伙人查看。

?

?

有話要說?

?

Q:?你用Numpy進行哪些運算?

歡迎留言與大家分享

?

猜你想看?

?

  • ?

  • ?

  • ?

  • ?

?

更多精彩?

?

在公眾號對話框輸入以下關鍵詞

查看更多優質內容!

?

PPT?|?報告?|?讀書?|?書單?|?干貨?

大數據?|?揭秘?|?Python?|?可視化

AI?|?人工智能?|?5G?|?中臺

機器學習?|?深度學習?|?神經網絡

合伙人?|?1024?|?段子?|?數學

?

據統計,99%的大咖都完成了這個神操作

?

?

?

覺得不錯,請把這篇文章分享給你的朋友

轉載 / 投稿請聯系:baiyu@hzbook.com

更多精彩,請在后臺點擊“歷史文章”查看

點擊閱讀原文,了解更多

總結

以上是生活随笔為你收集整理的Numpy统计计算、数组比较,看这篇就够了的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。