Python 数据分析与展示笔记1 -- Numpy 基础
生活随笔
收集整理的這篇文章主要介紹了
Python 数据分析与展示笔记1 -- Numpy 基础
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Python 數據分析與展示筆記1 – NumPy 基礎
Python 數據分析與展示系列筆記是筆者學習、實踐Python 數據分析與展示的相關筆記
課程鏈接: Python 數據分析與展示
參考文檔:
NumPy 官方文檔(英文)
NumPy 官方文檔(中文)
PIL 官方文檔
一、NumPy 簡介
1、安裝與導入
# 安裝 pip install numpy# 導入 import numpy as np2、ndarray 數組
ndarray 數組:
- ndarray 可以表示 N 維數組
- ndarray 數組對象的運算是經過優化的,可以去掉元素間運算所需的循環,提升運算速度
- 數組中的數據類型最好一樣,才能發揮優化的性能
ndarray 對象的屬性:
| .ndim | 秩,即軸的數量或維度的數量 |
| .shape | ndarray 對象的尺度,對于矩陣,n行m列 |
| .size | ndarray 對象元素的個數,相當于 .shape 中 n*m 的值 |
| .dtype | ndarray對象的元素類型 |
| .itemsize | ndarray對象中每個元素的大小,以字節為單位 |
ndarray 的元素類型:
| bool | 布爾類型,True或False |
| intc | 與C語言中的int類型一致,一般是int32或int64 |
| intp | 用于索引的整數,與C語言中ssize_t一致,int32或int64 |
| int8 | 字節長度的整數,取值:[‐128, 127] |
| int16 | 16位長度的整數,取值:[‐32768, 32767] |
| int32 | 32位長度的整數,取值:[‐231, 231‐1] |
| int64 | 64位長度的整數,取值:[‐263, 263‐1] |
| uint8 | 8位無符號整數,取值:[0, 255] |
| uint16 | 16位無符號整數,取值:[0, 65535] |
| uint32 | 32位無符號整數,取值:[0, 232‐1] |
| uint64 | 32位無符號整數,取值:[0, 264‐1] |
| float16 | 16位半精度浮點數:1位符號位,5位指數,10位尾數 |
| float32 | 32位半精度浮點數:1位符號位,8位指數,23位尾數 |
| float64 | 64位半精度浮點數:1位符號位,11位指數,52位尾數 |
| complex64 | 復數類型,實部和虛部都是32位浮點數 |
| complex128 | 復數類型,實部和虛部都是64位浮點數 |
二、ndarray 數組的操作
1、創建 ndarray 數組
| np.array(list/tuple, dtype) | 從列表、元組等中創建 |
| np.arange(n, dtype) | 類似range()函數,返回ndarray類型,元素從0到n‐1 |
| np.ones(shape, dtype) | 根據shape生成一個全1數組,shape是元組類型 |
| np.zeros(shape, dtype) | 根據shape生成一個全0數組,shape是元組類型 |
| np.full(shape,val, dtype) | 根據shape生成一個數組,每個元素值都是val |
| np.eye(n, dtype) | 創建n*n單位矩陣,即對角線為1,其余為0 |
| np.ones_like(a, dtype) | 根據數組a的形狀生成一個全1數組 |
| np.zeros_like(a, dtype) | 根據數組a的形狀生成一個全0數組 |
| np.full_like(a,val, dtype) | 根據數組a的形狀生成一個數組,每個元素值都是val |
| np.linspace(start,end,num) | 從start到end等間距地填充num各數據,形成數組 |
| np.concatenate((a,b)) | 將兩個或多個數組合并成一個新的數組 |
2、ndarray 數組的變換
| .reshape(shape) | 不改變數組元素,返回一個shape形狀的數組,原數組不變 |
| .resize(shape) | 與.reshape()功能一致,但修改原數組 |
| .swapaxes(ax1,ax2) | 將數組n個維度中兩個維度進行調換 |
| .flatten() | 對數組進行降維,返回折疊后的一維數組,原數組不變 |
| .astype(new_type) | 不改變數組元素,改變元素的數據類型 |
| .tolist() | 轉化為列表 list 類型 |
3、ndarray 數組的索引和切片
| .[index] | 索引,index從0開始,-1表示倒數第一個 |
| .[start, end, dist] | 切片,從 star t到 end,間距為 dist |
4、Numpy 一元函數
| np.abs(x)、np.fabs(x) | 計算數組各元素的絕對值 |
| np.sqrt(x) | 計算數組各元素的平方根 |
| np.square(x) | 計算數組各元素的平方 |
| np.log(x)、np.log10(x)、np.log2(x) | 計算數組各元素的自然對數、10底對數和2底對數 |
| np.ceil(x) | np.floor(x) 計算數組各元素的ceiling值或floor值 |
| np.rint(x) | 計算數組各元素的四舍五入值 |
| np.modf(x) | 將數組各元素的小數和整數部分以兩個獨立數組形式返回 |
| np.cos(x)、np.cosh(x) | |
| np.sin(x)、np.sinh(x) | |
| np.tan(x)、np.tanh(x) | 計算數組各元素的普通型和雙曲型三角函數 |
| np.exp(x) | 計算數組各元素的指數值 |
| np.sign(x) | 計算數組各元素的符號值,1(+), 0, ‐1(‐) |
5、Numpy 二元函數
| + ‐ * / ** | 兩個數組各元素進行對應運算 |
| np.maximum(x,y) np.fmax() | |
| np.minimum(x,y) np.fmin() | 元素級的最大值/最小值計算 |
| np.mod(x,y) | 元素級的模運算 |
| np.copysign(x,y) | 將數組y中各元素值的符號賦值給數組x對應元素 |
| > < >= <= == != | 兩個數組各元素進行算術比較,產生布爾型數組 |
6、NumPy 統計函數
| sum(a, axis=None) | 根據給定軸axis計算數組a相關元素之和,axis整數或元組 |
| mean(a, axis=None) | 根據給定軸axis計算數組a相關元素的期望,axis整數或元組 |
| average(a,axis=None,weights=None) | 根據給定軸axis計算數組a相關元素的加權平均值 |
| std(a, axis=None) | 根據給定軸axis計算數組a相關元素的標準差 |
| var(a, axis=None) | 根據給定軸axis計算數組a相關元素的方差 |
| min(a)、max(a) | 計算數組a中元素的最小值、最大值 |
| argmin(a)、argmax(a) | 計算數組a中元素最小值、最大值的降一維后下標 |
| unravel_index(index, shape) | 根據shape將一維下標index轉換成多維下標 |
| ptp(a) | 計算數組a中元素最大值與最小值的差 |
| median(a) | 計算數組a中元素的中位數(中值) |
7、NumPy 隨機函數
| np.random.rand(d0,d1,…,dn) | 根據d0‐dn創建隨機數數組,浮點數,[0,1),均勻分布 |
| np.random.randn(d0,d1,…,dn) | 根據d0‐dn創建隨機數數組,標準正態分布 |
| np.random.randint(low[,high,shape]) | 根據shape創建隨機整數或整數數組,范圍是[low, high) |
| np.random.seed(s) | 隨機數種子,s是給定的種子值 |
| np.random.shuffle(a) | 根據數組a的第1軸進行隨排列,改變數組x |
| np.random.permutation(a) | 根據數組a的第1軸產生一個新的亂序數組,不改變數組x |
| np.random.choice(a[,size,replace,p]) | 從一維數組a中以概率p抽取元素,形成size形狀新數組, replace表示是否可以重用元素,默認為False |
| np.random.uniform(low,high,size) | 產生具有均勻分布的數組,low起始值,high結束值,size形狀 |
| np.random.normal(loc,scale,size) | 產生具有正態分布的數組,loc均值,scale標準差,size形狀 |
| np.random.poisson(lam,size) | 產生具有泊松分布的數組,lam隨機事件發生率,size形狀 |
8、NumPy 梯度函數
| np.gradient(f) | 計算數組f中元素的梯度,當f為多維時,返回每個維度梯度, 中間元素的梯度=(后-前)/2,最左/上邊元素=(后-自己),最右/下邊元素=(自己-前) |
9、NumPy 數據平滑函數
函數原型:
np.convolve(a, v, mode='full')參數:
- a:需要平滑的一維數組,大小為N
- v:一維權重數組,窗口大小為M
- mode:平滑模式,可選 ‘full’, ‘valid’, ‘same’
- full:默認值,返回每一個卷積值,長度是N+M-1,在卷積的邊緣處,信號不重疊,存在邊際效應
- same:返回的數組長度為max(M, N),邊際效應依舊存在
- valid:返回的數組長度為max(M,N) - min(M,N) + 1,此時返回的是完全重疊的點,邊緣的點無效
三、NumPy 數據存取
1、一維/二維數組(通常為csv格式)
函數原型:
# 保存 np.savetxt(frame, array, fmt='%.18e', delimiter=None)# 讀取 np.loadtxt(frame, dtype=np.float, delimiter=None, unpack=False)參數:
- frame:保存的文件名,可以是.gz或.bz2的壓縮文件格式
- array:存入文件的數組
- fmt:寫入文件的格式,例如:%d %.2f %.18e
- delimiter:分割字符串,默認是任何空格,csv文件為逗號
- dtype : 數據類型,可選
- unpack : 如果True,讀入屬性將分別寫入不同變量
2、任意維度(通常為文本格式)
- 被拉平為一維數組存入
- 讀取時需要知道數組原本的維度,才能正確還原
函數原型:
# 保存 ndarray.tofile(frame, sep='', format='%s')# 讀取 np.fromfile(frame, dtype=float, count=‐1, sep='')參數:
- frame:保存的文件名,文件、字符串類型
- dtype:數據類型,可選
- sep:數據分割字符串,如果是空串,寫入文件為二進制
- format:寫入數據的格式
- count:讀入元素個數,‐1表示讀入整個文件
3、NumPy 自己的類型
- 可以保存任意維度的數組,直接讀取就能正確還原
函數原型:
# 保存 np.save(fname, array) # npy格式 np.savez(fname, array) # npz格式,為npy的壓縮形式# 讀取 np.load(fname)參數:
- frame:文件名,.npy / .npz 格式
- array:存入文件的數組
GOOD LUCK!
總結
以上是生活随笔為你收集整理的Python 数据分析与展示笔记1 -- Numpy 基础的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MongoDB出错:ERROR: chi
- 下一篇: php byte stringbuffe