小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Numpy統(tǒng)計(jì)計(jì)算、數(shù)組比較,看這篇就夠了

 網(wǎng)摘文苑 2022-11-26 發(fā)布于新疆

導(dǎo)讀:工欲善其事,必先利其器。此前,我們在《玩數(shù)據(jù)必備Python庫:Numpy使用詳解》一文中介紹了利用Numpy進(jìn)行矩陣運(yùn)算的方法,本文繼續(xù)介紹Numpy的統(tǒng)計(jì)計(jì)算及其他科學(xué)運(yùn)算的方法。

作者:魏溪含 涂銘 張修鵬

如需轉(zhuǎn)載請聯(lián)系華章科技

文章圖片1

01 Numpy的統(tǒng)計(jì)計(jì)算方法

NumPy內(nèi)置了很多計(jì)算方法,其中最重要的統(tǒng)計(jì)方法及說明具體如下。

  • sum():計(jì)算矩陣元素的和;矩陣的計(jì)算結(jié)果為一個(gè)一維數(shù)組,需要指定行或者列。
  • mean():計(jì)算矩陣元素的平均值;矩陣的計(jì)算結(jié)果為一個(gè)一維數(shù)組,需要指定行或者列。
  • max():計(jì)算矩陣元素的最大值;矩陣的計(jì)算結(jié)果為一個(gè)一維數(shù)組,需要指定行或者列。
  • mean():計(jì)算矩陣元素的平均值。
  • median():計(jì)算矩陣元素的中位數(shù)。

需要注意的是,用于這些統(tǒng)計(jì)方法的數(shù)值類型必須是int或者float。

數(shù)組示例代碼如下:

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

得到的結(jié)果是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計(jì)算的是行的和,結(jié)果以列的形式展示。axis = 0計(jì)算的是列的和,結(jié)果以行的形式展示。

延伸學(xué)習(xí):

官方推薦教程是不錯(cuò)的入門選擇。

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

02 Numpy中的arg運(yùn)算

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

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

argmin函數(shù)可用于求一個(gè)array中最小值的下標(biāo),用法與argmax類似。示例代碼如下:

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

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

import numpy as npx = 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) #隨機(jī)打亂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]

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

03 FancyIndexing

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

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

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

import numpy as npx = 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])

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

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

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

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

04 Numpy數(shù)組比較

Numpy有一個(gè)強(qiáng)大的功能是數(shù)組或矩陣的比較,數(shù)據(jù)比較之后會(huì)產(chǎn)生boolean值。示例代碼如下:

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

我們看到輸出的結(jié)果如下:

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

下面再來看一個(gè)比較復(fù)雜的例子,示例代碼如下:

import numpy as npmatrix = 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進(jìn)行比較,得到的就是[False, True, False]。print(matrix[second_column_25, :])代表的是返回true值的那一行數(shù)據(jù),即 [20, 25, 30]。

注意:上述的示例是單個(gè)條件,Numpy也允許我們使用條件符來拼接多個(gè)條件,其中“&”代表的是“且”,“|”代表的是“或”。比如,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)來計(jì)算小于等于3的元素個(gè)數(shù)了,1代表True,0代表False。也可以通過np.any(x == 0),只要x中有一個(gè)元素等于0就返回True。np.all(x>0)則需要所有的元素都大于0才返回True。這一點(diǎn)可以幫助我們判斷x里的數(shù)據(jù)是否滿足一定的條件。

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多