<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Python代碼轉(zhuǎn)Latex公式,這個開源庫用一行代碼幫你搞定

          共 2150字,需瀏覽 5分鐘

           ·

          2020-09-01 20:03

          (點擊上方快速關(guān)注并設(shè)置為星標(biāo),一起學(xué)Python)

          機(jī)器之心報道

          編輯:小舟


          你的代碼中有數(shù)學(xué)公式嗎?


          數(shù)學(xué)是數(shù)據(jù)科學(xué)和機(jī)器學(xué)習(xí)的重要基礎(chǔ),數(shù)學(xué)運(yùn)算的結(jié)果對于機(jī)器學(xué)習(xí)項目而言是至關(guān)重要的。在編寫代碼時,我們常常需要定義數(shù)學(xué)公式的計算形式。像 S=r^2 這樣簡單的數(shù)學(xué)公式,大概不會出現(xiàn)拼寫錯誤。但如果是下面這樣的公式呢?


          圖源:知乎用戶 @馬啃菠籮


          還記得數(shù)學(xué)老師密密麻麻的板書嗎?人們習(xí)慣于手寫公式的運(yùn)算過程。而如果計算機(jī)編程語言能夠顯示出類似于手寫公式的計算過程,檢查公式運(yùn)算是否準(zhǔn)確就可以輕松多了吧。


          近日,GitHub 上一個名叫 handcalcs 的開源庫就解決了這個問題。


          項目地址:https://github.com/connorferster/handcalcs


          handcalcs 庫:將 Python 計算代碼轉(zhuǎn)換為 Latex 公式


          handcalcs 庫可將 Python 計算代碼自動渲染為 Latex 公式,呈現(xiàn)方式類似于手寫的公式計算:先編寫符號公式,再代入具體數(shù)字,最后得出結(jié)果。



          正如上面的演示樣例所示,計算機(jī)能夠識別的公式形式是:



          而人們更習(xí)慣的是如下形式的數(shù)學(xué)公式:



          handcalcs 的功能就是,將數(shù)學(xué)公式和運(yùn)算過程以人們更容易理解的形式展示出來。


          數(shù)學(xué)計算的結(jié)果往往會影響后續(xù)代碼的運(yùn)行過程,而復(fù)雜的數(shù)學(xué)公式更容不得一點錯漏,因此對于包含較多復(fù)雜數(shù)學(xué)公式的 Python 代碼,用 handcalcs 進(jìn)行自查或許是有必要的。


          如何使用 handcalcs?


          那么,這個開源庫要如何應(yīng)用呢?


          基本用法 1:Jupyter 單元格魔法函數(shù)


          handcalcs 的設(shè)計初衷是在 Jupyter Notebook 或 Jupyter Lab 中作為單元格魔法函數(shù)來使用。


          首先,引入 handcalcs 模塊并運(yùn)行單元格:


          import handcalcs.render


          接下來,在想要使用 handcalcs 的單元格上面添加一行魔法函數(shù) %%render:


          %%render


          例如:


          %%rendera = 2b = 3c = 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)


          返回一個由 (latex_code: str, locals: dict) 組成的元組,其中 locals 是函數(shù)命名空間范圍內(nèi)所有變量的字典。


          其他功能


          有些公式的參數(shù)量較多,如果按照常規(guī)的格式顯示在一列,會浪費大量空間。而使用 handcalcs,只需添加注釋標(biāo)簽# Parameters 就能讓參數(shù)以三列的形式顯示出來:



          而有些公式的計算過程非常繁瑣,也會占用大量顯示空間,只需使用標(biāo)簽# Short 就能讓運(yùn)算過程的顯示行數(shù)減少:



          反之,如果你比較喜歡推導(dǎo)等式對齊的方式,可以使用# Long 標(biāo)簽顯示。


          有時你并不需要代入數(shù)值計算,只需要以符號的形式顯示數(shù)學(xué)計算公式。那么,你需要使用# Symbolic 標(biāo)簽:



          handcalcs 的功能本身還可以解決編程中的小問題,即在 Python 中,顯示多個變量的值通常需要多個 print() 語句,而使用 handcalcs 能讓事情變得簡單許多:



          很多開發(fā)者喜歡用_表示公式中的下標(biāo),handcalcs 可以將其顯示出來,甚至多級下標(biāo)也可以通過嵌套的形式得到顯示。



          數(shù)學(xué)公式中經(jīng)常出現(xiàn)希臘字母(如「pi」、「eta」等),只要在代碼中編寫出對應(yīng)的英文名,比如 alpha、beta,handcalcs 就可以顯示出希臘字母:



          不只是簡單的數(shù)學(xué)公式,復(fù)雜公式也不在話下,比如含有積分的公式:



          缺陷


          雖然用處多多,但項目作者表示,handcalcs 仍存在一些小缺陷。

          首先,handcalcs 并不適用于 collections 這種數(shù)據(jù)類型,例如 list、tuple、dict 等。

          其次是在變量名方面,handcalcs 是針對 Jupyter 環(huán)境設(shè)計的。如果在 notebook 上重復(fù)使用變量名,則可能導(dǎo)致錯誤的數(shù)學(xué)運(yùn)算。

          handcalcs 雖然有些小瑕疵,但它對開發(fā)者而言頗有幫助。感興趣的話,快來動手試一下吧!

          瀏覽 39
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧美高清橾逼网免费观看 | 日韩V高清 | 粉嫩99精品99久久久久久特污兔 | 亚洲色视频在线 | 免费在线看黄色片 |