轉(zhuǎn)自 | 機(jī)器之心 數(shù)學(xué)是數(shù)據(jù)科學(xué)和機(jī)器學(xué)習(xí)的重要基礎(chǔ),,數(shù)學(xué)運(yùn)算的結(jié)果對(duì)于機(jī)器學(xué)習(xí)項(xiàng)目而言是至關(guān)重要的。在編寫代碼時(shí),,我們常常需要定義數(shù)學(xué)公式的計(jì)算形式,。像 S=r^2 這樣簡(jiǎn)單的數(shù)學(xué)公式,大概不會(huì)出現(xiàn)拼寫錯(cuò)誤,。但如果是下面這樣的公式呢,? 還記得數(shù)學(xué)老師密密麻麻的板書嗎?人們習(xí)慣于手寫公式的運(yùn)算過(guò)程,。而如果計(jì)算機(jī)編程語(yǔ)言能夠顯示出類似于手寫公式的計(jì)算過(guò)程,,檢查公式運(yùn)算是否準(zhǔn)確就可以輕松多了吧。 近日,,GitHub 上一個(gè)名叫 handcalcs 的開源庫(kù)就解決了這個(gè)問(wèn)題,。 項(xiàng)目地址:https://github.com/connorferster/handcalcs handcalcs 庫(kù):將 Python 計(jì)算代碼轉(zhuǎn)換為 Latex 公式 handcalcs 庫(kù)可將 Python 計(jì)算代碼自動(dòng)渲染為 Latex 公式,呈現(xiàn)方式類似于手寫的公式計(jì)算:先編寫符號(hào)公式,,再代入具體數(shù)字,,最后得出結(jié)果。 正如上面的演示樣例所示,,計(jì)算機(jī)能夠識(shí)別的公式形式是: 而人們更習(xí)慣的是如下形式的數(shù)學(xué)公式: handcalcs 的功能就是,,將數(shù)學(xué)公式和運(yùn)算過(guò)程以人們更容易理解的形式展示出來(lái)。 數(shù)學(xué)計(jì)算的結(jié)果往往會(huì)影響后續(xù)代碼的運(yùn)行過(guò)程,,而復(fù)雜的數(shù)學(xué)公式更容不得一點(diǎn)錯(cuò)漏,,因此對(duì)于包含較多復(fù)雜數(shù)學(xué)公式的 Python 代碼,用 handcalcs 進(jìn)行自查或許是有必要的,。 如何使用 handcalcs,? 那么,這個(gè)開源庫(kù)要如何應(yīng)用呢,? 基本用法 1:Jupyter 單元格魔法函數(shù) handcalcs 的設(shè)計(jì)初衷是在 Jupyter Notebook 或 Jupyter Lab 中作為單元格魔法函數(shù)來(lái)使用。 首先,,引入 handcalcs 模塊并運(yùn)行單元格: import handcalcs.render 接下來(lái),,在想要使用 handcalcs 的單元格上面添加一行魔法函數(shù) %%render: %%render 例如: %%render a = 2 b = 3 c = 2*a + b/3 如果系統(tǒng)安裝了 Latex 環(huán)境,,你還可以將 notebook 導(dǎo)出成 pdf 格式文件。 基本用法 2:函數(shù)裝飾器 @handcalc() 除了在 Jupyter cell 中使用外,,在 Python 的函數(shù)中也可以使用 handcalcs,。 首先導(dǎo)入 @handcalc() 裝飾器: from handcalcs.decorator import handcalc 然后編寫函數(shù)。注意:函數(shù)必須 return locals(): @handcalc() def my_calc(x, y, z): a = 2*x / y b = 3*a c = (a + b) / z return locals() @handcalc(left: str = '', right: str = '', jupyter_display: bool = False) 返回一個(gè)由 (latex_code: str, locals: dict) 組成的元組,,其中 locals 是函數(shù)命名空間范圍內(nèi)所有變量的字典,。 其他功能 有些公式的參數(shù)量較多,如果按照常規(guī)的格式顯示在一列,,會(huì)浪費(fèi)大量空間,。而使用 handcalcs,只需添加注釋標(biāo)簽# Parameters 就能讓參數(shù)以三列的形式顯示出來(lái): 而有些公式的計(jì)算過(guò)程非常繁瑣,,也會(huì)占用大量顯示空間,,只需使用標(biāo)簽# Short 就能讓運(yùn)算過(guò)程的顯示行數(shù)減少: 反之,如果你比較喜歡推導(dǎo)等式對(duì)齊的方式,,可以使用# Long 標(biāo)簽顯示,。 有時(shí)你并不需要代入數(shù)值計(jì)算,只需要以符號(hào)的形式顯示數(shù)學(xué)計(jì)算公式,。那么,,你需要使用# Symbolic 標(biāo)簽: handcalcs 的功能本身還可以解決編程中的小問(wèn)題,即在 Python 中,,顯示多個(gè)變量的值通常需要多個(gè) print() 語(yǔ)句,,而使用 handcalcs 能讓事情變得簡(jiǎn)單許多: 很多開發(fā)者喜歡用_表示公式中的下標(biāo),handcalcs 可以將其顯示出來(lái),,甚至多級(jí)下標(biāo)也可以通過(guò)嵌套的形式得到顯示,。 數(shù)學(xué)公式中經(jīng)常出現(xiàn)希臘字母(如「pi」、「eta」等),,只要在代碼中編寫出對(duì)應(yīng)的英文名,,比如 alpha、beta,,handcalcs 就可以顯示出希臘字母: 不只是簡(jiǎn)單的數(shù)學(xué)公式,,復(fù)雜公式也不在話下,比如含有積分的公式: 缺陷
程序員大白是一群哈工大,,東北大學(xué),,西湖大學(xué)和上海交通大學(xué)的碩士博士運(yùn)營(yíng)維護(hù)的號(hào),大家樂(lè)于分享高質(zhì)量文章,,喜歡總結(jié)知識(shí),! |
|
來(lái)自: 黃爸爸好 > 《數(shù)學(xué)》