身為程序員我敢跟你打賭100塊,這個數學符號你根本不會認不會寫

如果你喜歡機器學習和數據科學方面的研究,或者做著相關的工作,總有一天,你一定會想看看你平時經常使用的數學的世界,而不是止步於只會調用Python庫。

然後你就會去看很多很多文獻,看看那些功能到底是如何運作的。你看的越多、學得越多,你就越有可能想到新的點子,然後成為行業大佬,迎娶白富美、走上人生巔峰!想想都很激動。但是當你打開你的第一份文獻,納尼???這是神馬?!

身為程序員我敢跟你打賭100塊,這個數學符號你根本不會認不會寫


如果你在大學學過數學,或者研究過機器學習,你還是能夠隱隱約約馬馬虎虎辨認出來這都是啥,慢慢看還能寫成代碼。但是對於很多人來說,這是WHAT???話說古時候象形文字都還挺形象挺直觀的,這這這也太複雜了吧!

身為程序員我敢跟你打賭100塊,這個數學符號你根本不會認不會寫


事實上,你想檢驗你是否真的看懂了這些方程,你可以試試用代碼把這方程寫出來。最最最厲害的,你還可以用通俗不晦澀的語言把這些玩意兒表達出來。在這篇文章中,分享了一些代碼來描述數學符號的例子!往下看吧!

求和、求積符號


身為程序員我敢跟你打賭100塊,這個數學符號你根本不會認不會寫


求和符號是數學中最有用、最常用的符號之一。它是迭代的符號,儘管它被涉及得複雜,實現卻相當簡單,而且非常有用。

# Python代碼

x = [1, 2, 3, 4, 5, 6]

result = 0

for i in range(6):

result += x[i]

print(result)

# 輸出為21

像看到的代碼那樣,求和符號用for循環表示,頂部的數字的範圍是for循環的次數,下面的數字是循環變量。每次循環都把數加到result中,最後再輸出結果。

與求和符號類似的,還有求積符號。

身為程序員我敢跟你打賭100塊,這個數學符號你根本不會認不會寫


都用了同樣的for循環,只是求和符號是把數加到結果中,而求積符號是把數乘到結果中。看看代碼:

# Python代碼

x = [1, 2, 3, 4, 5, 1]

result = 1

for i in range(6):

result *= x[i]

print(result)

# 輸出為120

階乘

階乘的符號是!,它的運用同樣十分廣泛。那麼更應該看看它的實現代碼是怎樣的。

例如5!的值是通過1×2×3×4×5求得,它的代碼這樣寫:

# Python代碼

result = 1

for i in range(1,6):

result *= i

print(result)

# 輸出為120

分段函數


身為程序員我敢跟你打賭100塊,這個數學符號你根本不會認不會寫


分段函數可以根據後面的條件,知道哪個變量該使用哪個表達式。對於程序員來說,if條件分支語句,可以很方便的實現這個功能:

# Python代碼

i = 3

y = [-2, 3, 4, 1]

result = 0

if i in y:

result = sum(y)

elif i > 0:

result = 1

else:

result = 0

print(result)

# 輸出為6

如上所示,括號中每一行的正確表示法指示了每條路徑應該執行的內容。我將額外的“包含”符號添加到每個條件中,以增加更多的洞察力。如前所述,我們檢查了i值是否在y列表中。認識到這一點後,我們返回了數組的和。如果i值不在數組中,我們將根據該值返回0或1。

每一行的表達式,都有唯一的條件來約束,符合條件才能執行對應的表達式。看看第三條語句,條件是y包含i,所以在用代碼實現時,我們用in來檢查i是否在y數組中。如果i不在y數組中,則i in y這條語句的值是false,否則是true。

看到這裡,哦?簡單?繼續看下面!

矩陣的點乘和叉乘

最後介紹一下數據科學家最常用最喜歡——矩陣的乘法。最容易理解的形式是點乘運算。每行每列對應的元素相乘:

身為程序員我敢跟你打賭100塊,這個數學符號你根本不會認不會寫


注意兩個矩陣的行數相同、列數相同。

代碼這樣寫:

# Python代碼

y = [[2,1],[4,3]]

z = [[1,2],[3,4]]

x = [[0,0],[0,0]]

for i in range(len(y)):for j in range(len(y[0])):

x[i][j] = y[i][j] * z[i][j]

print(x)

# 輸出為[[2, 2], [12, 12]]

最後看看典型的矩陣乘法過程----叉乘,在機器學習中最常用。第一個矩陣的每行的各元素,乘上第二個矩陣的每列的各元素,再把各個積相加,作為結果矩陣相應位置的元素。說起來很難懂,建議去看看動圖,就一目瞭然了。

身為程序員我敢跟你打賭100塊,這個數學符號你根本不會認不會寫


代碼如下,使用numpy點方法:

# Python代碼

y = [[1, 2], [3, 4]]

z = [[2], [1]]

x = [[0], [0]]

for i in range(len(y[0])):sum = 0for j in range(len(z)):

x[i][0] += y[i][j] * z[j][0]

print(x)

# 輸出為[[4], [10]]

這只是幾個例子。當然,為了提高效率,可以組合使用這些方法,並且通常有一個現成的庫。但是對這些代碼的理解可以讓程序員更深刻得了解數學公式。


分享到:


相關文章: