Python數據分析基礎(二)

一、Numpy 常用函數分類概覽

函數類別常用函數
基本數學函數np.sum(x)np.sqrt(x)np.exp(x)np.log(x)np.sin(x)np.abs(x)np.power(a, b)np.round(x, n)?等
統計函數np.mean(x)np.median(x)np.std(x)np.var(x)np.min(x)np.max(x)np.percentile(x, q)?等
比較函數np.greater(a, b)np.less(a, b)np.equal(a, b)np.logical_and(a, b)np.isnan(x)?等
數組操作函數np.concatenate((a, b))np.split(x, indices)np.reshape(x, shape)np.copy(x)np.unique(x)np.sort(x)?等
其他常用函數np.where(condition, x, y)np.in1d(a, b)np.argsort(x)np.lexsort(keys)?等

?二、詳細函數示例及說明

1. 基本數學函數

(1)平方根計算?np.sqrt(x)
import numpy as np# 計算單個數值的平方根
print(np.sqrt(9))  # 輸出:3.0# 計算數組的平方根
print(np.sqrt([1, 4, 9]))  # 輸出:[1. 2. 3.]# 對ndarray數組進行操作
arr1 = np.array([1, 225, 81])
print(np.sqrt(arr1))  # 輸出:[ 1. 15.  9.]
(2)指數計算?np.exp(x)
import numpy as np# 計算e的n次方(e≈2.718)
print(np.exp(1))  # 輸出:2.718281828459045(e^1)
print(np.exp(2))  # 輸出:7.38905609893065(e^2)
print(np.exp(0))  # 輸出:1(e^0=1)
(3)自然對數計算?np.log(x)
import numpy as np# 計算自然對數(以e為底)
print(np.log(1))  # 輸出:0.0(ln(1)=0)
print(np.log(np.e))  # 輸出:1.0(ln(e)=1)
(4)三角函數?np.sin(x)np.cos(x)
import numpy as np# 計算正弦值(參數為弧度)
print(np.sin(1))  # 輸出:0.8414709848078965(sin(1弧度))# 計算π的正弦和余弦
print(np.sin(np.pi))  # 輸出:1.2246467991473532e-16(≈0,sin(π)=0)
print(np.cos(np.pi))  # 輸出:-1.0(cos(π)=-1)
(5)絕對值?np.abs(x)
import numpy as nparr = np.array([1, -2, 3, 4, -5])
print(np.abs(arr))  # 輸出:[1 2 3 4 5](所有元素取絕對值)
(6)冪運算?np.power(a, b)
import numpy as nparr = np.array([1, -2, 3, 4, -5])
print(np.power(arr, 2))  # 輸出:[ 1  4  9 16 25](每個元素的平方)
(7)四舍五入?np.round(x, n)
import numpy as nparr = np.array([2.1, -0.6, 1.9])
print(np.round(arr))  # 輸出:[ 2. -1.  2.](默認保留0位小數)
(8)取整函數?np.ceil(x)np.floor(x)
import numpy as nparr = np.array([1.2, 1.7, 0.9])
print(np.ceil(arr))  # 輸出:[2. 2. 1.](向上取整)
print(np.floor(arr))  # 輸出:[1. 1. 0.](向下取整)
(9)缺失值檢測?np.isnan(x)
import numpy as np# 無缺失值的數組
arr = np.array([1, 2, 3])
print(np.isnan(arr))  # 輸出:[False False False]# 含缺失值(np.nan)的數組
arr = np.array([1, np.nan, 3])
print(np.isnan(arr))  # 輸出:[False  True False](True表示對應位置是缺失值)

2. 統計函數

(1)求和?np.sum(x)
import numpy as np# 隨機生成3x3數組(元素為1-100的整數)
arr = np.random.randint(1, 100, (3, 3))
print(arr)  # 示例輸出:[[75 77 70][58 52 10][10 28 20]]
print(np.sum(arr))  # 輸出:400(數組所有元素的和)
(2)平均值?np.mean(x)
import numpy as nparr = np.random.randint(1, 10, (3, 3))
print(arr)  # 示例輸出:[[1 1 2][9 3 8][5 3 4]]
print(np.mean(arr))  # 輸出:4.0(所有元素的平均值)
(3)中位數?np.median(x)
import numpy as nparr = np.random.randint(1, 10, 5)
print(arr)  # 示例輸出:[6 6 6 8 7](先隨機生成5個元素)
print(np.median(arr))  # 輸出:6.0(排序后中間位置的元素)
(4)方差與標準差
  • 方差?np.var(x):衡量數據離散程度(平均值與每個數據點差的平方的平均值)
  • 標準差?np.std(x):方差的平方根,與原數據單位一致
import numpy as nparr = np.array([1, 2, 3, 4, 5])
print(np.var(arr))  # 輸出:2.0(方差)
print(np.std(arr))  # 輸出:1.4142135623730951(標準差)
(5)最值與索引?np.max(x)np.min(x)np.argmax(x)np.argmin(x)
import numpy as nparr = np.array([1, 2, 3, 4, 5])
print(np.max(arr), np.argmax(arr))  # 輸出:5 4(最大值為5,位于索引4的位置)
print(np.min(arr), np.argmin(arr))  # 輸出:1 0(最小值為1,位于索引0的位置)
(6)分位數?np.percentile(x, q)

分位數是將一組數據按照從小到大的順序排列后,處于某一特定百分比位置的數值。它可以理解為:

  • 把數據分成 100 等份,第q個分位數就是處于第q%位置的數值(q的取值范圍是 0-100)
  • 例如:第 50 個分位數就是中位數,即數據中一半的值小于等于它,一半的值大于等于它
import numpy as np# 定義一個簡單的1維數組
arr = np.array([1, 2, 3, 4, 5])# 計算第50個分位數(中位數)
print(np.percentile(arr, 50))  # 輸出:3.0
# 解釋:數組排序后,中間位置的元素是3,因此50%分位數為3# 計算第40個分位數
print(np.percentile(arr, 40))  # 輸出:2.6
# 解釋:
# 1. 數組排序后索引為0-4(共5個元素)
# 2. 第40%位置的索引 = 40% * (5-1) = 1.6(即位于索引1和2之間)
# 3. 索引1的值為2,索引2的值為3,線性插值計算:2 + 0.6*(3-2) = 2.6
import numpy as nparr = np.array([1, 2, 3, 4, 5])# 同時計算多個分位數(25%、50%、75%)
print(np.percentile(arr, [25, 50, 75]))  # 輸出:[2.  3.  4. ]
# 解釋:
# - 25%分位數:位于索引0.75處,插值后為2.0
# - 50%分位數:即中位數3.0
# - 75%分位數:位于索引2.25處,插值后為4.0

?

(7)累積和?np.cumsum(x)
import numpy as nparr = np.array([1, 2, 3, 4, 5])
print(np.cumsum(arr))  # 輸出:[ 1  3  6 10 15](依次累加的結果:1, 1+2=3, 3+3=6, ...)

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

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

相關文章

Colab中如何臨時使用udocker(以MinIO為例)

本文主要是想記錄一下自己在Colab中用udocker啟動一個MinIO的容器的過程。 1. 命令行配置環境 由于目前沒有用到GPU,所以我選擇的是CPU的環境。(內存12G)然后就可以在命令行里安裝udocker了,并配置minio的環境 # 由于minio需要做兩個端口映射&#xff0c…

rt-thread 5.2.1 基于at-start-f437開發過程記錄

基于rt-thread 5.2.1 bsp/at/at32f437-start進行開發,記錄詳細過程,包括中間遇到的各種坑。 at32f437-start原理圖 自己設計的電路板主要換了一塊小封裝的同系列芯片, 目標是移植opENer。 1. 開發環境 env長時間不用,有點忘了。這次新下載…

EMCCD相機與電可調變焦透鏡的同步控制系統設計與實現

EMCCD相機與電可調變焦透鏡的同步控制系統設計與實現 前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家,覺得好請收藏。點擊跳轉到網站。 摘要 本文詳細介紹了基于Python的EMCCD相機&#xff0…

前綴和-560.和為k的子數組-力扣(LeetCode)

一、題目解析1.子數組是數組中元素的連續非空序列2.nums[i]范圍為[-1000,1000],存在負數3.由于2的題目條件,該題不能用雙指針算法,不具備單調性 二、算法原理解法1:暴力解法->枚舉 O(N^2)固定一個值,向后枚舉數組和…

解決企業微信收集表沒有圖片、文件組件,不能收集圖片的問題

問題: 企業微信里面的收集表功能,有一個圖片收集的收集表,但是插入的組件沒有收集圖片的組件? 原因: 大概率是微盤未啟用 解決方法: 1、登陸企業微信管理后臺 企業微信 2、訪問微盤頁面,…

認識單片機

《認識單片機》課程內容 一、課程導入 在我們的日常生活中,有很多看似普通卻充滿智慧的小物件。比如家里的智能電飯煲,它能精準地控制煮飯的時間和溫度,讓米飯煮得香噴噴的;還有樓道里的聲控燈,當有人走過發出聲音時&a…

數據結構(2)順序表算法題

一、移除元素1、題目描述2、算法分析 思路1:查找val值對應的下標pos,執行刪除pos位置數據的操作。該方法時間復雜度為O(n^2),因此不建議使用。思路2:創建新數組(空間大小與原數組一致&#xff0…

汽車電子架構

本文試圖從Analog Devices官網中的汽車解決方案視角帶讀者構建起汽車電子的總體架構圖,為國內熱愛和從事汽車電子行業的伙伴們貢獻一份力量。 一 、汽車電子架構總覽 整個汽車電子包括四個部分:車身電子(Body Electronics)、座艙與…

pycharm 2025 專業版下載安裝教程【附安裝包】

安裝之前,請確保已經關閉所有安全軟件(如殺毒軟件、防火墻等)安裝包 👇鏈接:https://pan.xunlei.com/s/VOU-5_L1KOH5j3zDaaCh-Z28A1# 提取碼:6bjy下載 PyCharm2025專業版 安裝包 并 進行解壓運行 pycharm-2…

在 Java 世界里讓對象“旅行”:序列化與反序列化

Java 生態里關于 JSON 的序列化與反序列化(以下簡稱“序列化”)是一個久經考驗的話題,卻常因框架繁多、配置瑣碎而讓初學者望而卻步。本文將圍繞一段極簡的 JsonUtils 工具類展開,以 FastJSON 與 Jackson 兩大主流實現為例&#x…

High Speed SelectIO Wizard ip使用記錄

本次實驗的目的是通過VU9P開發板的6個TG接口,采用固定連接的方式,即X和X-維度互聯,其框圖如下所示:IP參數配置通過調用High Speed SelectIO Wizard來實現數據通路,High Speed SelectIO Wizard ip有24對數據通道&#x…

Execel文檔批量替換標簽實現方案

問題背景需求:俺現網班級作為維度,批量導出每個班級學員的數據,excel的個數在1k左右,每一張表的人數在90左右。導出總耗時在10小時左右。代碼編寫完成并導出現網數據后,發現導出的標題錯了。解決方案1.通過修改代碼&am…

SpringBoot配置多數據源多數據庫

Springboot支持配置多數據源。默認情況,在yml文件中只會配置一個數據庫。如果涉及到操作多個數據庫的情況,在同實例中(即同一個ip地址下的不同數據庫),可以采用數據庫名點數據庫表的方式,實現跨庫表的操作。…

Rocky9.4部署Zabbix7

一、配置安裝源 rpm -Uvh https://repo.zabbix.com/zabbix/7.0/rocky/9/x86_64/zabbix-release-7.0-5.el9.noarch.rpm ? yum clean all 二、安裝Zabbix server,Web前端,agent yum install zabbix-server-mysql zabbix-web-mysql zabbix-nginx-conf z…

【Java】對象類型轉換(ClassCastException)異常:從底層原理到架構級防御,老司機的實戰經驗

在開發中,ClassCastException(類轉換異常)就像一顆隱藏的定時炸彈,常常在代碼運行到類型轉換邏輯時突然爆發。線上排查問題時,這類異常往往因為類型關系復雜而難以定位。多數開發者習慣于在轉換前加個instanceof判斷就…

探路者:用 AI 面試加速人才集結,為戶外愛好者帶來更專業的服務

作為深耕戶外用品領域的知名品牌,探路者已構建起覆蓋全國的銷售服務網絡,上千品種的產品矩陣更是為品牌在市場中站穩腳跟提供了有力支撐。對探路者來說,要持續為戶外愛好者帶來專業且貼心的體驗,專業人才是核心支撐。然而&#xf…

LeetCode——面試題 05.01 插入

通過萬歲!!! 題目:一共會給四個數,分別是N、M、i、j,然后希望我們把N和M抓怒換為2進制以后,將M的二進制放在i到j之間的區域,如果M的二進制長度小于i-j1,則前面補0即可。最…

前端設計中如何在鼠標懸浮時同步修改塊內樣式

雖然只是一個小問題,但這個解決問題的過程也深化了自己對盒子模型的理解問題緣起正在寫一個登錄注冊的小窗口,想要在鼠標懸浮階段讓按鈕和文字都變色,但是發現實操的時候按鈕和文字沒辦法同時變色鼠標懸停前鼠標懸停后問題分析仔細分析了下該…

航空發動機高速旋轉件的非接觸式信號傳輸系統

航空發動機是飛機動力系統的核心,各種關鍵部件如渦輪、壓氣機等,經常處于極端高溫、高速旋轉的工作環境中。航空發動機內的傳感器數據,如何能夠穩定可靠的通過無線的方式傳輸到檢測太,一直是業內的一個難點和痛點。在這個領域&…

【postgresql按照逗號分割字段,并統計數量和求和】

postgresql按照逗號分割字段,并統計數量和求和postgresql按照逗號分割字段,并統計數量和求和postgresql按照逗號分割字段,并統計數量和求和 SELECT ucd, p ,tm, step, unitcd, tm_end from resource_calc_scene_rain_bound_value_plus whe…