numpy 最大值_第 85 天:NumPy 統計函數

45df33e9aa631d093d49bf019a131152.png

數學統計在我們的程序當中特別是數據分析當中是必不可少的一部分,本文就來介紹一下 NumPy 常見的統計函數。

最大值與最小值

numpy.amin()

用于計算數組中的元素沿指定軸的最小值。

可以通過 axis 參數傳入坐標軸來指定統計的軸,當指定 axis 時,axis 的范圍為 ndarray 的維度范圍,可以利用 shape 函數獲取 ndrray 的維度。我們來看例子:

import numpy as npa = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])print("初始數組:")print(a)print('\n')print(np.char.center('最小值', 15, '*'))print("所有維度的最小值:")print(np.amin(a))print('\n')print("0軸的最小值:")print(np.amin(a, 0))print('\n')print("1軸的最小值:")print(np.amin(a, 1))print('\n')# 返回初始數組:[[1 2 3] [4 5 6] [7 8 9]]******最小值******所有維度的最小值:10軸的最小值:[1 2 3]1軸的最小值:[1 4 7]

我們例子中使用的是二維數組,所以 axis 只有取0和1兩個值。其實我們還可以用?numpy.min()?來計算,效果是一樣的,只不過 NumPy 的官方文檔上沒有寫?numpy.min()?這個方法,看源碼我們知道這個方法其實是numpy.amin()?的別名。

numpy.amax()

用于計算數組中的元素沿指定軸的最大值。

可以通過 axis 參數傳入坐標軸來指定統計的軸,當指定 axis 時,axis 的范圍為 ndarray 的維度范圍,可以利用 shape 函數獲取 ndrray 的維度。我們來看例子:

import numpy as npa = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])print("初始數組:")print(a)print('\n')print(np.char.center('最大值', 15, '*'))print("所有維度的最大值:")print(np.amax(a))print('\n')print("0軸的最大值:")print(np.amax(a, 0))print('\n')print("1軸的最大值:")print(np.amax(a, 1))print('\n')# 返回初始數組:[[1 2 3] [4 5 6] [7 8 9]]******最大值******所有維度的最大值:90軸的最大值:[7 8 9]1軸的最大值:[3 6 9]

這個函數和?numpy.amin()?函數是相反的含義,也可以用?numpy.max()?來計算。

numpy.ptp()

計算數組中元素最大值與最小值的差(最大值 - 最小值)。

實例:

import numpy as npa = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])print("初始數組:")print(a)print('\n')print(np.char.center('最大值與最小值的差', 15, '*'))print("所有維度的極差:")print(np.ptp(a))print('\n')print("0軸的極差:")print(np.ptp(a, 0))print('\n')print("1軸的極差:")print(np.ptp(a, 1))print('\n')# 返回***最大值與最小值的差***所有維度的極差:80軸的極差:[6 6 6]1軸的極差:[2 2 2]

這個方法可以迅速的找出數組中任何維度的最大最小值之差,還是很方便的。

中位數

numpy.percentile()

百分位數是統計中使用的度量,表示小于這個值的觀察值的百分比。
numpy.percentile(a, q, axis) 接收以下參數:
a: 輸入數組
q: 要計算的百分位數,在 0 ~ 100 之間
axis: 沿著它計算百分位數的軸

這個百分位怎么理解呢?

例如第60個百分位是這樣一個值,它使得至少有60%的數據項小于或等于這個值,且至少有40%的數據項大于或等于這個值。

我們來看看實例:

import numpy as npa = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])print("初始數組:")print(a)print('\n')print(np.char.center('百分位數', 15, '*'))print("50%的分位數,即數組排序之后的中位數:")print(np.percentile(a, 50))print('\n')print("0軸的中位數:")print(np.percentile(a, 50, 0))print('\n')print("1軸的中位數:")print(np.percentile(a, 50, 1))print('\n')# 返回******百分位數*****50%的分位數,即數組排序之后的中位數:5.00軸的中位數:[4. 5. 6.]1軸的中位數:[2. 5. 8.]

numpy.median()

用于計算數組 a 中元素的中位數(中值)

我們來看實例:

import numpy as npa = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])print("初始數組:")print(a)print('\n')print(np.char.center('計算中位數', 15, '*'))print("所有元素的中位數:")print(np.median(a))print('\n')print("0軸的中位數:")print(np.median(a, 0))print('\n')print("1軸的中位數:")print(np.median(a, 1))print('\n')# 返回*****計算中位數*****所有元素的中位數:5.00軸的中位數:[4. 5. 6.]1軸的中位數:[2. 5. 8.]

總數與均值

numpy.sum()

用于按指定軸計算數組中的元素的和。

實例:

import numpy as npa = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])print("初始數組:")print(a)print('\n')print(np.char.center('求和', 15, '*'))print("所有維度的和:")print(np.sum(a))print('\n')print("按0軸求和:")print(np.sum(a, 0))print('\n')print("按1軸求和:")print(np.sum(a, 1))print('\n')# 返回*******求和******所有維度的和:45按0軸求和:[12 15 18]按1軸求和:[ 6 15 24]

不管按哪個維度求和,得出的結果再相加肯定等于所有維度求和的結果。

numpy.mean()

按軸計算數組中元素的算術平均值。

算術平均值是沿軸的元素的總和除以元素的數量。我們來看實例:

import numpy as npa = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])print("初始數組:")print(a)print('\n')print(np.char.center('計算算術平均值', 15, '*'))print("所有元素的算術平均值:")print(np.mean(a))print('\n')print("0軸的算術平均值:")print(np.mean(a, 0))print('\n')print("1軸的算術平均值:")print(np.mean(a, 1))print('\n')# 返回****計算算術平均值****所有元素的算術平均值:5.00軸的算術平均值:[4. 5. 6.]1軸的算術平均值:[2. 5. 8.]

numpy.average()

根據在另一個數組中給出的各自的權重計算數組中元素的加權平均值,該函數可以接收一個軸參數,如果沒有指定軸,則數組會被展開。

加權平均值是由每個分量乘以權重因子得到的平均值。即將各數值乘以相應的權數,然后加總求和得到總體值,再除以總的單位數。

舉個例子:數組[1, 2, 3, 4]對應的權重是[4, 3, 2, 1],那么加權平均值的計算公式為:

加權平均值=(14+23+32+41)/(4+3+2+1)

實例:

import numpy as npprint(np.char.center('加權平均值', 15, '*'))b = np.array([1, 2, 3, 4])print("所有元素的加權平均值(不指定權重相當于求平均值):")print(np.average(b))print('\n')print("指定權重的加權平均值:")print(np.average(b, weights=[4, 3, 2, 1]))print('\n')print("指定權重的加權平均值以及權重的和:")print(np.average(b, weights=[4, 3, 2, 1], returned=True))print('\n')# 返回*****加權平均值*****所有元素的加權平均值(不指定權重相當于求平均值):2.5指定權重的加權平均值:2.0指定權重的加權平均值以及權重的和:(2.0, 10.0)

我們可以通過returned參數來設置是否返回權重的和。在上例中,權重數組中元素相加等于10。

方差與標準差

numpy.var()

計算數組中元素的方差

統計中的方差(樣本方差)是每個樣本值與全體樣本值的平均數之差的平方值的平均數。計算公式為:

mean((x - x.mean())** 2)。

我們來看實例:

import numpy as npprint(np.char.center('計算方差', 15, '*'))print(np.var([1, 2, 3, 4]))print('\n')# 返回******計算方差*****1.25

numpy.std()

計算數組中袁術的標準差

標準差是一組數據平均值分散程度的一種度量,是方差的算術平方根。標準差公式如下:

std = sqrt(mean((x - x.mean())**2))

我們來看實例:

import numpy as npprint(np.char.center('計算標準差', 15, '*'))print(np.std([1, 2, 3, 4]))print('\n')# 返回*****計算標準差*****1.118033988749895

總結

本文向大家介紹了 NumPy 的統計函數,包括最大最小值函數、總數與均值函數、中位數函數以及方差與標準差函數。這些函數主要運用在一些數據分析的統計工作中,我們可以不用實現這些統計方法的原理而直接使用函數,使我們的代碼簡潔而高效。

參考

https://numpy.org/devdocs/reference/routines.statistics.html

文中示例代碼:python-100-days

系列文章第 84 天:NumPy 數學函數第 83 天:NumPy 字符串操作第 82 天:Python Web 開發之 JWT 簡介第 81 天:NumPy Ndarray 對象及數據類型從 0 學習 Python 0 - 80 大合集總結PS:公號內回復 :Python,即可進入Python 新手學習交流群,一起100天計劃!-END-Python 技術關于 Python 都在這里b3c96638336ee2a72d6307bf12ca1771.png

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/529540.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/529540.shtml
英文地址,請注明出處:http://en.pswp.cn/news/529540.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java中如何實現變量可配置_Java基礎-如何配置環境變量

Java環境變量詳細教程第一步、打開電腦環境變量設置窗口以Win10系統為例子。在桌面找到此電腦,右鍵此電腦— —>屬性,點擊屬性— —>點擊左側高級系統設置點擊高級系統設置點擊環境變量第二步、新建JAVA_HOME點擊系統變量中的新建,出現輸入框&…

python三引號解析_[宜配屋]聽圖閣

和C語言一樣,引號屬于特殊功能字符,不能夠像普通字符那樣直接通過print打印,需要進行一些處理,比如說反斜杠轉義等。這里介紹幾種打印三引號的方法,希望對需要的朋友有用。1、第一中方法比較簡單,直接使用三…

abaqus python 建立節點集合_在Python中創建Abaqus集

我想用Python在Abaqus中創建一個帶邊的幾何集。我不會事先知道邊的數目。嘗試將邊放入數組中,然后創建集合。你知道嗎myEdgesForSet []for i in range(0, len(mdb.models[Model].parts[Part].edges)):if something in mdb.models[Model].parts[Part].edges[i].feat…

java類默認訪問權限_Java的四種訪問權限

? 所謂訪問權限,指的就是本類中的成員變量、成員方法對其他類的可見性?試想一想,當我們修改一個非常龐大的項目時,如果所有變量和方法都是公共權限,那么后端中任何類都有權限去修改它的變量和方法,很有可能修改后就導…

java 數組 反射_【譯】10. Java反射——數組

用Java反射來處理數組有時候是技巧性很強的。特別是如果你需要獲取一個給定類型的數組的Class對象,像int[ ]等。本文將講述怎么用Java反射來創建數組和獲取數組的Class對象。下面是所涵蓋的主題列表:java.lang.reflect.ArrayCreating ArraysAccessing Ar…

定時執行java程序_如何讓Java程序定時運行

由于項目開發的需要,必須實現讓一個Java程序定時運行。比如,我的項目中,有一個網絡蜘蛛,需要從互聯網上抓取數據,與其配合,有另一個程序來對新抓取的頁面進行索引的創建,由于數據源更新頻率不高…

java遞歸實現排序_快速排序算法原理及java遞歸實現

快速排序 對冒泡排序的一種改進,若初始記錄序列按關鍵字有序或基本有序,蛻化為冒泡排序。使用的是遞歸原理,在所有同數量級O(n longn) 的排序方法中,其平均性能最好。就平均時間而言,是目前被認為最好的一種內部排序方…

java 泛型 .net_Java泛型

標簽:上一篇博文java8函數式編程--收集器collector:(http://my.oschina.net/joshuashaw/blog/487322)講得比較隨性,并沒有把源碼一句一句拿出來分析,后來發現groupingBy方法最后有一個if-else分支用來返回不同類型的collector&…

卡法電子商務 java_javacard DES算法API使用示例

********** 2017年3月15日留言 ——關于java卡Applet系列csdn博文 *************貌似有不少人在看我寫的幾篇關于java卡applet的博文,也收到了一些評論指正博文錯誤,或者私信叫我發代碼文件過去。在此需要說明的是,java卡applet的這幾篇博文…

java http請求原理_淺談Spring Cloud zuul http請求轉發原理

spring cloud 網關,依賴于netflix 下的zuul 組件zuul 的流程是,自定義 了ZuulServletFilter和zuulServlet兩種方式,讓開發者可以去實現,并調用先來看下ZuulServletFilter的實現片段Overridepublic void doFilter(ServletRequest s…

java堆外內存溢出_JVM 案例 - 堆外內存導致的溢出錯誤

案例一個網站為了實現客戶端實時從服務端接收數據,使用了 CometD 1.1.1 作為服務端推送框架,服務器是 Jetty7.1.4,CPU i5,內存 4G,操作系統 32位Windows。服務端常常拋出內存溢出異常,管理員把堆開到最大(3…

java mail outlook_已啟用Outlook API郵件與郵箱用戶

一個非常微妙的問題,也許是特定的環境 . 我正在嘗試使用Outlook 2010 API從啟用郵件的用戶中識別郵箱用戶 . 我們在Notes to Exchange遷移期間使用Dell Quest遷移工具,它是一個流動的項目 . 仍處于原型階段,因此使用VB宏來最終將在C&#xff…

oracle java存儲過程返回值_java程序調用Oracle 存儲過程 獲取返回值(無返回,非結果集,結果集)...

java程序調用Oracle 存儲過程 獲取返回值(無返回,非結果集,結果集)oracle中procedure是不能有返回值的,要想返回值,就得有輸出參數,同樣要想返回記錄集,可以把游標類型作為輸出參數。下面是詳細情況說明&am…

mysql dump工具升級_MySQL數據庫升級

當前不少系統的數據庫依舊是MySQL5.6,由于MySQL5.7及MySQL8.0在性能及安全方面有著很大的提升,因此需要升級數據庫。本文通過邏輯方式、物理方式原地升級來介紹MySQL5.6 升級至MySQL5.7的方法,并介紹其使用場景。1. 邏輯方式升級邏輯方式升級…

java int 128 ==_為什么 Java Integer 中“128==128”為false,而”100==100“為true?

這是一個挺有意思的討論話題,讓我們用代碼說話吧!運行下面的代碼:Integer a 128, b 128;System.out.println(a b);Integer c 100, d 100;System.out.println(c d);你會得到:falsetrue基本知識:我們知道,如果兩個引用指向同一個對象&…

mysql課程表學時_Mysql 鞏固提升 (學生表_課程表_成績表_教師表)

方便Mysql 鞏固提升創建表并插入數據:-- ------------------------------ Table structure for student-- ----------------------------DROP TABLE IF EXISTS student;CREATE TABLE student (id int(11) NOT NULL AUTO_INCREMENT,sname varchar(32) DEFAULT NULL,s…

初始java_第一章__初始JAVA

1.java的三個發展方向:JAVASE(面向對象、API、JVM)、JAVAME(移動設備、游戲、通信)、JAVAEE(JSP、EJB、服務)2.開發JAVA的程序步驟:1.編寫源程序 2.編譯 3.運行3.JDKJRE開發工具下載java環境jdk 安裝并配置環境變量,.安裝直接下一步下一步直到…

python最常用的版本、也稱為classic_2021年中國大學《創新思維與創業》單元測試答案...

2021年中國大學《創新思維與創業》單元測試答案被人們稱為 “寒地水稻第一人”的是袁隆平答:錯地圖數據的基本特征包括答:時間屬性 空間定位屬性 地理屬性對賣方征稅導致商品價格上升答:√( )是在床榻上使用的一種矮形家具。答:炕…

java 泛型 繼承_java基礎之泛型的繼承

關于泛型的基本介紹和理解請參考以下幾篇文章&#xff0c;或查詢更多資料&#xff1a;本篇以簡單的List<>方式來進行說明。ArrayList繼承了List,ArrayList沒有繼承ListList>等價于List extends Object>請參考以下代碼&#xff1a;/*** author Ding Chengyun* 2014-…

appium java環境_Appium環境搭建(Windows版)

注&#xff1a;appium安裝到C盤&#xff0c;node.js安裝到C盤一、安裝node.js1、到官網下載node.js&#xff1a;https://nodejs.org/en/download/2、獲取到安裝文件后&#xff0c;直接雙擊安裝文件&#xff0c;根據程序的提示&#xff0c;完成nodejs的安裝。3、安裝完成后&…