python——numpy學習筆記

67catl發表於2020-12-04

numpy

numpy概述

執行速度快(C語言編寫)
功能用途:陣列運算

  • 強大的N維陣列物件ndarray
  • 廣播功能函式
  • 線性代數、傅立葉變換、隨機數生成等

ndarray陣列

ndarray陣列:

N維陣列物件(矩陣),所有元素必須是相同的型別

建立ndarray陣列函式:

array:將輸入資料轉換為ndarray
arange:返回一個ndarray而不是列表
ones:建立一個全1陣列
zeros:建立一個全0陣列
empty:建立新陣列
eye:建立一個N*N的單位矩陣(對角線為1,其餘為0)
linspace:建立等差陣列

ndarray屬性:

ndim:表示維度個數
shape:表示各維度大小
dtype:表示資料型別
size:表示陣列大小
len:表示陣列長度
itemsize:

指定ndarray陣列元素的型別

ndarray陣列的基本索引和切片,以及布林索引

基本索引和切片

與Python列表的索引功能類似

boolean mask

通過關係式找陣列中需要的元素
boolean mask:布林索引,使用布林陣列作為索引

Brodcasting:ndarray的向量化計算

對broadcasting理解

  • 廣播機制:numpy中array的一個重要操作,對不同shape的陣列進行數值計算的方式,通過擴充套件陣列的方法實現,即兩個陣列對應位元素之間的相加、相減以及相乘的操作(相乘操作區分於線性代數中的矩陣相乘)
  • 原則:陣列維度不同,但後緣維度的軸長相符,或其中一方的長度為1。後緣長度:從末尾開始算起的維度
  • 原理:擴充套件陣列

ndarray陣列的淺拷貝與深拷貝

view:檢視

資料的引用,通過改引用可訪問、操作原資料。
函式:view

淺拷貝:

=運算子:賦值,為淺拷貝

深拷貝:

copy
copyto

ndarray陣列的轉置和軸對換

陣列的轉置/軸對換隻會返回源資料的一個檢視,不會對源資料進行修改。

函式:

transpose
swapaxes
rollaxis

ndarray陣列重塑

函式:

reshape 陣列重塑,返回的是檢視,會影響原始矩陣
ravel:將多維陣列轉換為一維陣列,返回的是檢視,會影響原始矩陣
flatten:將多維陣列轉換為一維陣列,返回的是拷貝
flat:將陣列轉換為一維的迭代器,可以用for訪問陣列中的每一個元素

ndarray陣列的拆分和合並

函式:

concatenate:沿一條軸連線一組陣列
stack:指定維度對陣列進行堆疊
split:沿指定軸在指定的位置拆分陣列

ndarray陣列的元素重複操作

函式:

tile:以整個陣列為單位的重複
repeat:以元素為單位的重複

ndarray陣列的新增和移除

新增

append:將值賦加到陣列的末尾
stack:按照不同軸的堆疊方式重新堆疊陣列
insert:在指定軸上的對應位置插入元素

移除

delete:按指定軸刪除元素,所有操作都在副本中進行

矩陣的翻轉與旋轉

函式:

fliplr:左右翻轉。適用場景:圖片左右翻轉
flipud:上下翻轉
roll:以指定維度滾動N個元素
rot90:矩陣旋轉90°或90°的倍數

Structured Arrays:結構化陣列

作用:將不同資料型別(一般有關聯性)寫入一個矩陣中
設定 建立ndarray陣列函式中的 dtype引數

frompyfunc:函式向量化

ufunc的普通用法:通用函式的點對點操作
作用:將計算單個值的函式轉化為計算陣列中每個元素的函式,基於陣列運算的函式,產生一個新的函式
缺點:因為這樣的用法涉及大量的函式呼叫,因此,向量化函式的效率並不高

Finding Pattern

函式:

diff:沿指定軸計算第N位的離散差值

numpy中的隨機數生成

函式:(import numpy.random)

seed:確定隨機數生成器的種子
rand:產生均勻分佈的樣本值
randint:從給定的上下限範圍內隨機選取整數
randn:產生正態分佈(平均值為0,標準差為1)的樣本值
binomial:產生二項分佈的樣本值
normal:產生正態分佈(高斯)的樣本值
beta:產生Beta分佈的樣本值
chisquare:產生卡方分佈的樣本值
gamma:產生Gamma分佈的樣本值
uniform:產生在[0,1]中均勻分佈的樣本值

與for迴圈結合使用

ndarray常用的統計方法

函式:

sum:對陣列中全部或某軸向的元素求和。零長度的陣列sum為0
mean:算數平均數。零長度的陣列mean為NaN
std、var:標準差、方差
min、max:最大值、最小值
argmin、argmax:最大、最小元素的索引
cumsum:所有元素的累計和
cumprod:所有元素的累計積

numpy中的線性代數

函式(import numpy.linalg):

diag:以一維陣列的形式返回方陣的對角線(或非對角線)元素,或將一維陣列轉換為方陣(非對角線元素為0)
dot:矩陣乘法
trace:計算對角線元素的和
det:計算矩陣行列式
eig:計算方陣的本徵值和本徵向量
inv:計算方陣的逆
pinv:計算矩陣的Moore-Penrose偽逆
qr:計算QR分解
svd:計算奇異值分解(SVD)
solve:解線性方程組Ax=b,其中A為一個方陣
lstsq:計算Ax=b的最小二乘解

numpy與matplotlib結合

矩陣matrix

程式碼示例(思維導圖)

將所有知識點的程式碼示例及結果 以 思維導圖 方式展現
實驗平臺:Jupyter Notebook
百度雲連結: 思維導圖
提取碼:16in

相關文章