新聞中心
學(xué)好數(shù)理化,走遍天下都不怕!這句話我們從小就聽(tīng),放到今天似乎依然行得通。達(dá)芬奇說(shuō):“數(shù)學(xué)是一切科學(xué)的基礎(chǔ)”,數(shù)學(xué)與代碼之間也有著千絲萬(wàn)縷的聯(lián)系。

似乎任何熱衷于機(jī)器學(xué)習(xí)、數(shù)據(jù)科學(xué)的人都相信,總有一天,他們將研究透徹python庫(kù),暢享里面的數(shù)學(xué)知識(shí)。大量論文集將展現(xiàn)在你面前,詳細(xì)說(shuō)明其原理。對(duì)核心數(shù)學(xué)的理解越深入,你就越可能獲得靈感,創(chuàng)造新方法。
對(duì)于多年來(lái)鉆研數(shù)學(xué)或從事機(jī)器數(shù)學(xué)學(xué)習(xí)的人來(lái)說(shuō),將上面這個(gè)方程式詳細(xì)地解析為含義和代碼并不難。但是對(duì)大部分普通人來(lái)說(shuō),無(wú)異于看天書(shū)。古代數(shù)學(xué)家似乎都喜歡用有趣的外觀符號(hào)來(lái)表述直觀的方法,但卻使方程和變量復(fù)雜化了。
實(shí)際上,代碼不僅可以編寫(xiě)程序,還可以讓這些復(fù)雜的語(yǔ)言再次變得直觀起來(lái)。加深對(duì)數(shù)學(xué)理解的最好方法就是編寫(xiě)代碼段來(lái)描述方程式,這會(huì)讓理解變得簡(jiǎn)單起來(lái)。
看過(guò)下面這些例子,相信你也會(huì)有這樣的感覺(jué)。
求和與乘積
求和符號(hào)是迭代數(shù)學(xué)中最有用和最常用的符號(hào)之一。盡管設(shè)計(jì)復(fù)雜,但運(yùn)算是相當(dāng)簡(jiǎn)單且有用。
- x = [1,2, 3, 4, 5]
- result = 0for i in range(5):
- result += x[i]Output of print(result)-> 15
如上所示,此符號(hào)代表從頂部的數(shù)字開(kāi)始的for循環(huán),頂端數(shù)字為最大值。在底部設(shè)置的變量將成為索引變量,并且每個(gè)循環(huán)的所有結(jié)果都將添加到總值中。
上面這個(gè)符號(hào)被稱為乘積運(yùn)算符,跟求和符號(hào)運(yùn)算方式相似,但不會(huì)相加每個(gè)結(jié)果,而是將它們相乘。
- x = [1,2, 3, 4, 5]
- result = 1for i in range(5):
- result *= x[i]Output of print(result)-> 120
條件括號(hào)
條件括號(hào)用于在特定條件下轉(zhuǎn)換方程的等式。對(duì)于碼農(nóng),常見(jiàn)的“ if”語(yǔ)句就是這樣。把它用代碼表述是這樣的:
- i = 3
- y = [-2, 3, 4, 1]
- result = 0if i in y:
- result = sum(y)
- elif i > 0:
- result = 1
- else:
- result = 0print(result) -> 6
如上所示,每一行括號(hào)中的正確表示法指定了每條路徑應(yīng)執(zhí)行的操作。我也將多余的“包含”符號(hào)添加到每個(gè)條件中,以加強(qiáng)理解。我們檢查了i值是否在y列表中。確認(rèn)過(guò)后,返回?cái)?shù)組的總和。如果i值不在數(shù)組中,將基于該值返回0或1。
階乘
階乘用“!”表示,幾乎所有計(jì)算器上都有此符號(hào)。這個(gè)符號(hào)會(huì)好理解一些,不過(guò)代碼會(huì)帶你進(jìn)一步了解它的原理。
5!將表示為:
- result =1
- for i in range(1,5):
- result *= i
- Output of print(result) -> 120
逐點(diǎn)操作和笛卡爾矩陣乘法
再來(lái)看一下數(shù)據(jù)科學(xué)家們經(jīng)常使用的語(yǔ)言庫(kù)(矩陣乘法)如何完成操作。逐點(diǎn)操作很容易理解,簡(jiǎn)寫(xiě)為:
請(qǐng)注意,該操作首先要求每個(gè)矩陣必須具有這樣的模型(即#行 =列=)
其代碼如下所示:
- 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]]
最后,讓我們看一下機(jī)器學(xué)習(xí)中最常用的典型矩陣乘法。用復(fù)雜的術(shù)語(yǔ)來(lái)說(shuō),此運(yùn)算為每個(gè)主要行與每個(gè)次要列的點(diǎn)積。
具體操作是:假設(shè)[#行,#列]→矩陣ixj要求#列(i)== #行(j)→最終輸出的模型為[#行(i), #列(j)]
看起來(lái)似乎很難理解,圖片能幫助你直觀了解這些操作。
該方程的代碼如下(使用numpy點(diǎn)法):
- y =[[1,2],[3,4]]
- z = [[2], [1]]
- # x has shape [2, 1]
- x = [[0], [0]]for i in range(len(y))
- for j in range(len(z):
- x[i][j] = np.dot(y[i], z[:, j])
- print(x) -> [[4],
- [10]]
看完這幾個(gè)簡(jiǎn)單的示例,是不是有種撥開(kāi)迷霧見(jiàn)光明的感覺(jué)!
用簡(jiǎn)單的代碼學(xué)習(xí)數(shù)學(xué),你會(huì)大有收獲的。
分享文章:換個(gè)角度看世界!用代碼了解數(shù)學(xué)符號(hào)
本文地址:http://m.5511xx.com/article/dhjedjs.html


咨詢
建站咨詢
