該博客為本人自學(xué)自編的筆記,主要介紹了Numpy部分用處,這是第一篇Numpy文章
Numpy庫(kù)的簡(jiǎn)介
Numpy是一個(gè)強(qiáng)大的Python庫(kù),用于進(jìn)行科學(xué)計(jì)算,它可以處理矩陣和很多數(shù)據(jù)。
- 多維數(shù)組對(duì)象:在Numpy中,最核心的部分就是它的多維數(shù)組對(duì)象,或者叫做ndarray。這個(gè)數(shù)組允許你存儲(chǔ)同類型的數(shù)據(jù)集合,可以是一維(比如一行數(shù)字)、二維(比如一個(gè)表格或矩陣)、甚至是更高維度的數(shù)據(jù)結(jié)構(gòu)。使用這種結(jié)構(gòu),我們可以非常高效地進(jìn)行數(shù)學(xué)和邏輯運(yùn)算。
- 處理工具:Numpy不僅提供了多維數(shù)組對(duì)象,還提供了大量的函數(shù)和操作,可以很方便地進(jìn)行數(shù)學(xué)計(jì)算、數(shù)組操作(比如切片、索引、迭代)、線性代數(shù)運(yùn)算、隨機(jī)數(shù)生成等等。使得Numpy成為了科學(xué)計(jì)算、數(shù)據(jù)分析、機(jī)器學(xué)習(xí)等領(lǐng)域不可或缺的工具。
如果你打算在Python中進(jìn)行任何形式的科學(xué)計(jì)算或數(shù)據(jù)分析,學(xué)習(xí)Numpy幾乎是必須的一步。
創(chuàng)建矩陣
通過已有的列表,建立一個(gè)多維數(shù)組
import numpy as np
#根據(jù)兩組列表,創(chuàng)建一個(gè)二維數(shù)組
matrix = np.array([[1, 2, 3], [4, 5, 6]])
在這個(gè)代碼中,根據(jù)兩組列表,通過 np.array() 函數(shù)將他們創(chuàng)建成了一個(gè)二維數(shù)組。
[
1
2
3
4
5
6
]
\begin{bmatrix} 1 & 2 &3\\ 4 & 5 &6\\ \end{bmatrix}
[14?25?36?]
此外,只要是能夠有序列表示的類型,都可以通過這個(gè)函數(shù)創(chuàng)建多維數(shù)組,元組同樣可以用于創(chuàng)建多維數(shù)組。
直接創(chuàng)建數(shù)組
創(chuàng)建全0矩陣
import numpy as np
#創(chuàng)建一個(gè)3*3全為0的矩陣
zeros_matrix = np.zeros((3, 3))
在這個(gè)代碼中,通過 np.zeros() 函數(shù),創(chuàng)建了一個(gè)長(zhǎng)寬均為3的全0矩陣。
[
0
0
0
0
0
0
0
0
0
]
\begin{bmatrix} 0 & 0 &0\\ 0& 0 &0\\ 0&0&0\\ \end{bmatrix}
?000?000?000?
?
創(chuàng)建全1矩陣
import numpy as np
#創(chuàng)建一個(gè)3*3全為1的矩陣
ones_matrix = np.ones((3, 3))
在這個(gè)代碼中,通過 np.zeros() 函數(shù),創(chuàng)建了一個(gè)長(zhǎng)寬均為3的全0矩陣。
[
1
1
1
1
1
1
1
1
1
]
\begin{bmatrix} 1 & 1 &1\\ 1& 1 &1\\ 1&1&1\\ \end{bmatrix}
?111?111?111?
?
創(chuàng)建對(duì)角線為1的矩陣
import numpy as np
#創(chuàng)建一個(gè)3*3的單位矩陣
identity_matrix = np.eye(3)
在這個(gè)代碼中,通過 np.eye() 函數(shù),創(chuàng)建了3*3對(duì)角線全為1的單位矩陣
[
1
0
0
0
1
0
0
0
1
]
\begin{bmatrix} 1 & 0 &0\\ 0& 1 &0\\ 0&0&1\\ \end{bmatrix}
?100?010?001?
?
矩陣的加減乘除
矩陣的加減
進(jìn)行矩陣的加減前提是兩個(gè)矩陣擁有相同的維度,加減就是將矩陣中對(duì)應(yīng)的數(shù)字進(jìn)行加減。我們直接用 + - 號(hào)即可將他們加減。
import numpy as np
#我們用字母代替,以便更好的展示
A = np.array([[a, b], [c, d]])
B = np.array([[e, f], [g, h]])
C = A + B
D = A - B
此時(shí)C的結(jié)果應(yīng)該是
C
=
[
a
+
e
b
+
f
c
+
g
d
+
h
]
C=\begin{bmatrix} a+e & b+f\\ c+g& d+h \\ \end{bmatrix}
C=[a+ec+g?b+fd+h?]
D的結(jié)果
D
=
[
a
?
e
b
?
f
c
?
g
d
?
h
]
D=\begin{bmatrix} a-e & b-f\\ c-g& d-h \\ \end{bmatrix}
D=[a?ec?g?b?fd?h?]
如果想讓矩陣都加減某一個(gè)數(shù),直接使用**+ -** 號(hào)那個(gè)數(shù)即可
A = np.array([[a, b], [c, d]])
C = A+1
C = [ a + 1 b + 1 c + 1 d + 1 ] C=\begin{bmatrix} a+1 & b+1\\ c+1& d+1 \\ \end{bmatrix} C=[a+1c+1?b+1d+1?]
矩陣的乘除
乘法
矩陣的乘除并不是加減一樣簡(jiǎn)單,他的計(jì)算規(guī)則是這樣的。
A
=
[
a
b
c
d
]
B
=
[
e
f
g
h
]
A=\begin{bmatrix} a & b\\ c& d \\ \end {bmatrix} B=\begin{bmatrix} e & f\\ g& h \\ \end {bmatrix}
A=[ac?bd?]B=[eg?fh?]
那么A×B就是這樣的
A
×
B
=
(
a
e
+
b
g
a
f
+
b
h
c
e
+
d
g
c
f
+
d
h
)
\mathbf{A} \times \mathbf{B} = \begin{pmatrix} ae + bg & af + bh \\ ce + dg & cf + dh \end{pmatrix}
A×B=(ae+bgce+dg?af+bhcf+dh?)
使用的函數(shù)是
import numpy as np
A = np.array([[a, b], [c, d]])
B = np.array([[e, f], [g, h]])
A × B = np.dot(A,B)
除法
對(duì)于矩陣,并不存在“正常”的除法,除以一個(gè)矩陣就是乘上它的逆矩陣
A
×
A
?
1
=
I
單位矩陣
A ×A^{-1}= I_{單位矩陣}
A×A?1=I單位矩陣?
在Python中,逆矩陣的函數(shù)為
A_inv = np.linalg.inv(A)
此時(shí)除以A就等價(jià)于乘上A_inv
B ? A = np.dot(B, np.linalg.inv(A))
乘除一個(gè)數(shù)
和加減一樣,只需要使用 * / 符號(hào)即可
A = np.array([[a, b], [c, d]])
D = A * 2
D = [ a ? 2 b ? 2 c ? 2 d ? 2 ] D=\begin{bmatrix} a*2 & b*2\\ c*2& d*2 \\ \end{bmatrix} D=[a?2c?2?b?2d?2?]文章來源:http://www.zghlxwxcb.cn/news/detail-846332.html
此外,不止是加減乘除,平方、判斷大小等等都可以直接用在矩陣上。文章來源地址http://www.zghlxwxcb.cn/news/detail-846332.html
到了這里,關(guān)于【Numpy第一講】如何生成矩陣,如何對(duì)矩陣進(jìn)行加減乘除的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!