日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

利用 Numpy 进行矩阵相关运算

發布時間:2025/5/22 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 利用 Numpy 进行矩阵相关运算 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

正文共:3266 字 31 圖 預計閱讀時間: 9 分鐘

本文目錄:

  • 1. 前言
    • 1.1 基本介紹
    • 1.2 運行環境
  • 2. 函數清單
  • 3. 案例講解
    • 3.1 Numpy.linalg
    • 3.2 Numpy.matlib

1.前言

1.1 基本介紹

NumPy 是Python數據分析必不可少的第三方庫,NumPy 的出現一定程度上解決了Python運算性能不佳的問題,同時提供了更加精確的數據類型。如今,NumPy 被Python其它科學計算包作為基礎包,已成為 Python 數據分析的基礎,可以說 NumPy 就是SciPy、Pandas等數據處理或科學計算庫最基本的函數功能庫。

數據挖掘的理論背后,幾乎離不開線性代數的計算,如矩陣乘法、矩陣分解、行列式求解等。本文將介紹 NumPy(目前最新版本為 1.16) 中與線性代數相關的模塊的使用方法,包括 numpy.linalg , numpy.matlib 。

Numpy : https://docs.scipy.org/doc/numpy/reference/routines.html

numpy.linalg : https://docs.scipy.org/doc/numpy/reference/routines.linalg.html

numpy.matlib : https://docs.scipy.org/doc/numpy/reference/routines.matlib.html

numpy.dual : https://docs.scipy.org/doc/numpy/reference/routines.dual.html

numpy.fft : https://docs.scipy.org/doc/numpy/reference/routines.fft.html

(numpy.dual主要是利用scipy加速運算,用法與linalg和matlib中方法類似,這里不再多做介紹,numpy.fft涉及應用層面,限于篇幅,暫時不做擴展)

1.2 運行環境

  • 操作系統: win10
  • python版本:3.7.0
  • IPython版本:6.5.0
  • numpy版本 :1.15.1

2.函數清單

國際慣例,引入 NumPy 使用別名 np ,所有函數清單,方便速查。另外在 Numpy 中一維數組表示向量,多維數組表示矩陣。

Linear algebra (numpy.linalg)

線性代數模塊

Matrix and vector products

矩陣相乘

dot(a, b[, out])

向量或者矩陣乘積

linalg.multi_dot(arrays)

多個矩陣的乘積

vdot(a, b)

僅適用于向量內積

inner(a, b)

內積( 對于兩個二維數組的inner,相當于按X和Y的最后順序的軸方向上取向量 ,然后依次計算內積后組成的多維數組)

outer(a, b[, out])

向量外積

matmul(x1, x2, /[, out, casting, order, …])

矩陣乘積

linalg.matrix_power(a, n)

矩陣乘冪

Decompositions

矩陣分解

linalg.qr(a[, mode])

矩陣的QR分解

linalg.svd(a[, full_matrices, compute_uv])

SVD分解

Matrix eigenvalues

特征值和特征向量

linalg.eig(a)

特征值和特征向量(方陣)

linalg.eigvals(a)

特征值(方陣)

Norms and other numbers

范數等

linalg.norm(x[, ord, axis, keepdims])

向量或者矩陣的范數

linalg.det(a)

行列式的值

linalg.matrix_rank(M[, tol, hermitian])

使用SVD分解得到矩陣的秩

trace(a[, offset, axis1, axis2, dtype, out])

Solving equations and inverting matrices

解線性方程組和逆

linalg.solve(a, b)

解線性方程組的準確解(要求滿秩)

linalg.tensorsolve(a, b[, axes])

解Ax=b

linalg.lstsq(a, b[, rcond])

最小二乘

linalg.inv(a)

矩陣的逆

linalg.pinv(a[, rcond])

偽逆

Matrix library (numpy.matlib)

矩陣模塊

mat(data[, dtype])

矩陣類型

matrix(data[, dtype, copy])

矩陣類型

asmatrix(data[, dtype])

將輸入轉化為矩陣類型

bmat(obj[, ldict, gdict])

塊矩陣構造

empty(shape[, dtype, order])

只記錄形狀的空矩陣

zeros(shape[, dtype, order])

全0矩陣

ones(shape[, dtype, order])

全1矩陣

matlib.eye(n[, M, k, dtype, order])

產生對角線元素為1,其余元素為0的矩陣。 n 行數 M列數 k 對角元相對主對角線的位置 (可以產生長矩陣)

identity(n[, dtype])

單位陣

matlib.repmat(a, m, n)

向量或矩陣(最高只支持到2維)列方向重復m次,行方向重復n次

matlib.rand(*args)

填充隨機數的矩陣

matlib.randn(*args)

填充數符合標準正態分布的矩陣

3.案例講解

3.1 numpy.linalg 模塊

  • 模塊引入以及取別名
1import numpy as np 2import numpy.linalg as linalg
  • 向量或矩陣乘積

  • 多矩陣的乘積

相對于矩陣之間兩兩乘積,多矩陣的時候使用 multi_dot() 更加便捷

  • 向量內積

只適用于向量,如果為矩陣則結果不為矩陣的內積

  • 內積

# 對于兩個二維數組的inner,相當于按X和Y的最后順序的軸方向上取向量

# 然后依次計算內積后組成的多維數組

  • 矩陣乘冪

這里使用第二十四講的馬爾科夫矩陣

(這里基本上已經可以確定穩態了)

  • QR分解

這里使用第十七講習題課的矩陣,可以發現和我們之前計算的 QR 結果是一致的,只不過有符號的差別。

  • SVD分解

這里使用第三十講奇異值分解習題課的例子

  • 方陣的特征值和特征向量

這里使用第二十一講習題課的例子

(可以發現結果都對特征向量進行了標準化)

  • 特征值

該方法只返回特征值

  • 范數

默認是二階范數

  • 行列式的值

可以單獨求解單個矩陣的行列式的值,也可以多個矩陣同時求解行列式的值

  • 矩陣的秩

同樣支持多個矩陣同時求解矩陣的秩

  • 矩陣的跡

  • 解線性方程組

使用第二講矩陣消元習題的例子,該方法要求滿秩,即系數矩陣為方陣且各列線性無關。

  • 矩陣形式求解線性方程組 (Ax=b)

使用第二講矩陣消元習題的例子,該方法同樣要求滿秩,即系數矩陣為方陣且各列線性無關。

  • 最小二乘

使用第十六講習題課的例子,返回值中含有多個值,系數矩陣在返回值的第一個數組中

使用第三講課程內容中的例子

  • 偽逆

使用第三十四講習題課的例子,這里要求輸入為方陣,因此使用該例子,我們將原矩陣補全為方陣

3.2 numpy.matlib 模塊

  • 矩陣類型

  • 將其他類型轉化為矩陣類型

  • 塊矩陣構造

  • 空矩陣

默認會填充隨機值(應該是占位用的)

  • 全 0 矩陣

  • 全 1 矩陣

  • 對角線為 1 矩陣

這里可以不止是在主對角線上,可由參數k控制,該參數定義全為 1 的對角線離主對角線的相對距離,為正則往上三角移動,為負則往下三角移動。 并且可以是非方陣。三個參數分別對應行數,列數和相對位置

  • 單位陣

  • 隨機數矩陣

  • 隨機數符合標準正態分布的矩陣

原文發布于微信公眾號 - 零維領域(lingweilingyu)

總結

以上是生活随笔為你收集整理的利用 Numpy 进行矩阵相关运算的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。