成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

機器學習的數學 之python矩陣運算

開發 開發工具
矩陣屬于線性代數數學分支。線性代數是關于向量空間和線性映射的一個數學分支。它包括對線、面和子空間的研究,同時也涉及到所有的向量空間的一般性質。

[[188138]]

本文提綱

1. 什么是矩陣

2. 矩陣在現實應用場景

3. 矩陣表示

4. 矩陣運算

5. 理解矩陣乘法

一、 什么是矩陣

一個 m × n 的矩陣是一個由 m 行 n 列元素排列成的矩形陣列。以下是一個由 6 個數字元素構成的 2 行 3 列的矩陣:

 

矩陣屬于線性代數數學分支。線性代數是關于向量空間和線性映射的一個數學分支。它包括對線、面和子空間的研究,同時也涉及到所有的向量空間的一般性質。表面上,排成矩形的數字就是個矩陣。實際,矩陣是有限維線性空間的線性變換的表示形式。它代表著空間到空間的映射。

二、 矩陣在現實應用場景

在程序中,配合矩陣模擬真實數據,并可以實現如下功能:二維圖形變換、人臉變換、人臉識別、信息轉換等。比如一張圖片,簡單的黑白圖只有黑色和白色構成,是不是可以有 1 0 兩個數值的二維矩陣來表示呢?自然,尤其在圖像處理里面,圖像信息是用二維矩陣數據。

矩陣分析,是一種方便的計算工具,可以以簡單的形式表達復雜的信息。

三、 矩陣表達式

我們選擇 Python 作為代碼演示案例。利用的是 NumPy 庫。什么是 NumPy?

NumPy 是一個基礎科學的計算包,包含:

  • 一個強大的N維數組對象
  • sophisticated (broadcasting) functions
  • tools for integrating C/C++ and Fortran code
  • 有用的線性代數、傅立葉轉換和隨機數生成函數

在代碼中,導入 numpy 函數。

比如下面展示 1 × 2 和 2 × 2 的矩陣。調用 shape 方法,可獲取矩陣的大小。同樣,numpy 方便了我們很多操作。可以直接創建全 0 矩陣、全 1 矩陣和單元矩陣。代碼 matrix_exp.py 如下:

  1. # -*- coding: utf-8 -*- 
  2.  
  3. # 導入 numpy 函數,以 np 開頭 
  4. import numpy as np 
  5.  
  6. if __name__ == '__main__'
  7.     mat1 = np.array([1, 3]) 
  8.     mat1 = np.mat(mat1)  # 相當于 np.mat([1,3]), mat 函數將目標數據的類型轉換為矩陣(matrix) 
  9.     print mat1 
  10.     # 1 行 2 列的矩陣(也稱 1 * 2 矩陣) 
  11.     # ==> [[1 3]] 
  12.  
  13.     print 
  14.  
  15.     mat2 = np.array([[1, 3], [3, 4]]) 
  16.     mat2 = np.mat(mat2) 
  17.     print mat2 
  18.     # 2 * 2 矩陣 
  19.     # ==> [[1 3] 
  20.     # ==>  [3 4]] 
  21.  
  22.     # 獲取矩陣的大小 
  23.     print mat1.shape 
  24.     print mat2.shape 
  25.  
  26.     print 
  27.  
  28.     mat3 = np.zeros((2, 3))  # 2 * 3 的全 0 矩陣 
  29.     mat4 = np.ones((3, 2))   # 3 * 2 的全 1 矩陣 
  30.     mat5 = np.identity(3)    # 3 * 3 的單元矩陣 
  31.     mat6 = np.eye(3, 3, 0)   # eye(N, M=None, k=0, dtype=float) 對角線是 1 其余值為 0 的矩陣, k 指定對角線的位置 
  32.     print mat3 
  33.     print mat4 
  34.     print mat5 
  35.     print mat6 

右鍵,Run 可得到下面結果:

  1. [[1 3]] 
  2. [[1 3] 
  3.  [3 4]] 
  4. (1, 2) 
  5. (2, 2) 
  6. [[ 0.  0.  0.] 
  7.  [ 0.  0.  0.]] 
  8. [[ 1.  1.] 
  9.  [ 1.  1.] 
  10.  [ 1.  1.]] 
  11. [[ 1.  0.  0.] 
  12.  [ 0.  1.  0.] 
  13.  [ 0.  0.  1.]] 
  14. [[ 1.  0.  0.] 
  15.  [ 0.  1.  0.] 
  16.  [ 0.  0.  1.]] 

如上注解詳細解釋了方法的使用。

「提示」代碼共享在 GitHub:https://github.com/JeffLi1993/robot-mumu

四、 矩陣運算

矩陣運算包括了加減乘除、轉置、逆矩陣、行列式、矩陣的冪、伴隨矩陣等。

矩陣加法、減法、數量乘法規則如下:(和向量的運算規則一樣)

  • -A = (-1)A
  • A - B = A + (-B)
  • 2A + 3B = (2A)+ (3B)

比如下面展示下 矩陣與矩陣相乘、矩陣求逆、轉置矩陣及每行或每列求和的運算。代碼 matrix_op.py 如下:

  1. # -*- coding: utf-8 -*- 
  2.  
  3. # 導入 numpy 函數,以 np 開頭 
  4. import numpy as np 
  5.  
  6. if __name__ == '__main__'
  7.     # 矩陣相乘 
  8.     mat1 = np.mat([1, 3]) 
  9.     mat2 = np.mat([[3], [4]]) 
  10.     mat3 = mat1 * mat2 
  11.     print mat3 
  12.     # 1 * 2 矩陣乘以 2 * 1 矩陣,得到 1 * 1 矩陣 
  13.     # ==> [[15]] 
  14.  
  15.     print 
  16.  
  17.     # 矩陣求逆 
  18.     mat4 = np.mat([[1, 0, 1], [0, 2, 1], [1, 1, 1]]) 
  19.     mat5 = mat4.I  # I 對應 getI(self) ,返回可逆矩陣的逆 
  20.     print mat5 
  21.     # 矩陣的逆 
  22.     # ==> [[-1. -1.  2.] 
  23.     # ==>  [-1.  0.  1.] 
  24.     # ==>  [ 2.  1. -2.]] 
  25.  
  26.     print 
  27.  
  28.     # 轉置矩陣 
  29.     mat6 = np.mat([[1, 1, 1], [0, 2, 1], [1, 1, 1]]) 
  30.     mat7 = mat6.T  # I 對應 getT(self) ,返回矩陣的轉置矩陣 
  31.     print mat7 
  32.     # 矩陣的轉置矩陣 
  33.     # ==> [[1 0 1] 
  34.     # ==>  [1 2 1] 
  35.     # ==>  [1 1 1]] 
  36.  
  37.     print 
  38.  
  39.     # 矩陣每一列的和 
  40.     sum1 = mat6.sum(axis=0) 
  41.     print sum1 
  42.     # 矩陣每一行的和 
  43.     sum2 = mat6.sum(axis=1) 
  44.     print sum2 
  45.     # 矩陣所有行列的總和 
  46.     sum3 = sum(mat6[1, :]) 
  47.     print sum3 
  48.  
  49.     print 
  50.  
  51.     # 矩陣與數組之間的轉換 
  52.     mat8 = np.mat([[1, 2, 3]]) 
  53.     arr1 = np.array(mat8)  # 矩陣轉換成數組 
  54.     print arr1 
  55.     arr2 = [1, 2, 3] 
  56.     mat9 = np.mat(arr2)  # 數組轉換成矩陣 
  57.     print mat9 

右鍵,Run 可得到下面結果:

 

  1. [[15]]  
  2. [[-1. -1. 2.]  
  3. [-1. 0. 1.]  
  4. [ 2. 1. -2.]]  
  5. [[1 0 1]  
  6. [1 2 1]  
  7. [1 1 1]]  
  8. [[2 4 3]]  
  9. [[3]  
  10. [3]  
  11. [3]]  
  12. [[0 2 1]]  
  13. [[1 2 3]]  
  14. [[1 2 3]] 

五、 理解矩陣和向量乘法

從解多元方程組可以看出

【本文為51CTO專欄作者“李強強”的原創稿件,轉載請通過51CTO聯系作者獲取授權】

戳這里,看該作者更多好文

責任編輯:武曉燕 來源: 51CTO專欄
相關推薦

2014-07-09 09:29:34

機器學習

2020-10-13 14:38:50

機器學習數據

2014-07-04 10:05:57

機器學習

2014-07-15 09:36:55

機器學習

2017-02-27 14:24:12

機器學習深度學習數學

2018-08-05 06:48:34

2014-07-01 09:30:54

機器學習

2021-02-06 23:00:39

機器學習工程人工智能

2020-09-30 14:24:58

PythonSet對象

2021-12-06 20:23:40

機器學習數學

2014-06-19 14:14:35

機器學習

2024-06-05 11:36:28

2017-09-04 22:41:31

深度學習矩陣運算代碼

2024-08-23 09:06:35

機器學習混淆矩陣預測

2020-06-01 08:46:35

機器學習數學Python

2014-06-30 10:58:02

機器學習

2017-11-24 10:43:43

Madlib機器學習

2024-01-24 14:14:59

人工智能矩陣

2018-03-15 11:50:53

機器學習入門Tensorflow

2017-09-06 08:49:33

機器學習數學公式代數
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩欧美操 | 欧美一区二区三区国产 | 免费观看成人鲁鲁鲁鲁鲁视频 | 欧美日韩在线一区二区三区 | 日本精品视频在线观看 | 久久久这里只有17精品 | 欧美91| 国产999精品久久久久久绿帽 | 久久久久久电影 | 国产91在线观看 | 在线中文字幕日韩 | 国产又爽又黄的视频 | 久久人人爽人人爽人人片av免费 | 羞羞视频免费在线观看 | 午夜黄色 | 日韩毛片中文字幕 | 国产午夜视频 | 一区二区av| 亚洲高清视频在线 | 91精品麻豆日日躁夜夜躁 | 亚洲97| 综合第一页| 2022国产精品 | 一级片在线视频 | 国产精品免费福利 | 二区成人| 国产一区二区三区视频免费观看 | 欧美一级艳情片免费观看 | 免费在线观看av片 | 亚欧洲精品在线视频免费观看 | 污片在线观看 | 欧美在线视频免费 | 国产91视频一区二区 | 综合久久av | 亚洲视频一 | 人人干人人超 | 1000部精品久久久久久久久 | 国内精品久久久久久影视8 最新黄色在线观看 | 国产精品污www一区二区三区 | 亚洲毛片在线观看 | 欧美成年人 |