python結合線性代數解決小學奧數問題

2021-09-28 18:40:20 字數 2105 閱讀 4954

因為我的記憶力不好,還得輔導兒子的小學奧數,面對好多「腳」的問題,學了線性代數後根本就不用動腦筋,「兩個動物」的通過克拉默法則一下就出來,「三個動物」以上的通過高斯變換就計算出來,都不用思考,於是對線性代數使用python的技術進行總結歸納,為了好玩,也會熟練掌握numpy,以便在神經網路中找到線性代數的身影

1 nump中矩陣運算

1.1 array和matrix

array的乘法,與矩陣的乘法得到結果不同,故雖然array表面和matrix看起來一樣,實則不同,

numpy陣列,矩陣和列表之間的相互轉換,matrix的計算邏輯是a矩陣的行*b矩陣的列,那麼陣列的乘法計算邏輯是什麼呢?numpy中陣列和矩陣的乘法,從這篇文章,可以看出陣列的乘法是兩個陣列相同座標的數值計算,故連個結果不相同

a = np.array([[1,1,1],[0,1,1],[0,0,1]])

b = np.array([[1,0,1],[0,1,0],[1,0,1]])

print(a*b)

a = np.mat([[1,1,1],[0,1,1],[0,0,1]])

b = np.mat([[1,0,1],[0,1,0],[1,0,1]])

print(a*b)

--------------------------------

[[1 0 1]

[0 1 0]

[0 0 1]]

[[2 1 2]

[1 1 1]

[1 0 1]]

雖說如此,但是陣列的內積,計算結果又與matrix乘法等價

a = np.array([[1,1,1],[0,1,1],[0,0,1]])

b = np.array([[1,0,1],[0,1,0],[1,0,1]])

print(np.dot(a,b))

print(a.dot(b))

1.2 解決小學奧數的一道題1.3 矩陣轉換基礎參見np.transpose

這裡記錄乙個例子訓練分類器,先看pytorch中顯示問題中描述因為plt.imshow中引數順序是imagesize,imagesize,channels,而npimg的引數順序是channels,imagesize,imagesize,所以需要轉換。那麼為什麼轉換順序是1,2,0呢,我們知道np.transpose的預設順序是2,1,0.

def imshow(img):

img = img / 2 + 0.5 # unnormalize

npimg = img.numpy()

# opencv讀取影象的通道是bgr,而matplotlib的通道是rgb

plt.imshow(np.transpose(npimg, (1, 2, 0)))

plt.show()

在看乙個np.transpose的作用及在影象操作中的使用,你會發現np.transpose對**逆時針旋轉了90度,而np.transpose(npimp, (1, 2, 0))則顯示的正確視角。

再閱讀pytorch顯示影象,

待完善…

線性代數(1)線性代數需要解決的問題

線性代數的中心問題是求解線性方程組。那什麼是線性方程呢?所謂線性方程就是指未知量是一次冪的等式,它的一般形式是ax by cz 0。也就是說線性方程組是由方程組成的,而這些方程的未知量都是一次冪。就如我們經常見到的y ax b就是線性方程,如果我們把y ax b畫到二維的直角座標系上,這個方程就是一...

線性代數 線性代數的本質

線性代數在機器學習的領域中扮演者十分重要的角色,所以這裡岔開先整理一些線性代數的基本概念和計算方法。這裡是3blue1brown的線性代數課程的截圖和筆記。作為快速複習的網路筆記。本課程的特點 通過影象展現線性代數計算在幾何圖形上意義。這樣能更好的理解線性代數為什麼叫做線性代數。線性代數為什麼採用這...

線性代數與Python

1.向量 1.1向量例子 1.2向量加法與減法 1.3向量的乘法 2.矩陣 2.1矩陣例子 2.2矩陣的形狀 2.3矩陣的建立函式 向量是指可以加總 以生成新的向量 可以乘以標量 即數字 也可以生成新的向量的物件。向量是有限維空間的點。向量以分量方式 componentwise 做運算。這意味著,如...