<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 公式,這個(gè)開源庫用一行代碼幫你搞定

          共 2614字,需瀏覽 6分鐘

           ·

          2022-07-22 10:29

          點(diǎn)擊上方小白學(xué)視覺”,選擇加"星標(biāo)"或“置頂

          重磅干貨,第一時(shí)間送達(dá)

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

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

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

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

          項(xiàng)目地址:https://github.com/connorferster/handcalcs

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

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

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

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

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

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

          如何使用 handcalcs?

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

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

          handcalcs 的設(shè)計(jì)初衷是在 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)

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

          其他功能

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



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

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

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

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

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

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

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

          缺陷

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

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

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

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

          好消息!

          小白學(xué)視覺知識星球

          開始面向外開放啦??????




          下載1:OpenCV-Contrib擴(kuò)展模塊中文版教程
          在「小白學(xué)視覺」公眾號后臺回復(fù):擴(kuò)展模塊中文教程即可下載全網(wǎng)第一份OpenCV擴(kuò)展模塊教程中文版,涵蓋擴(kuò)展模塊安裝、SFM算法、立體視覺、目標(biāo)跟蹤、生物視覺、超分辨率處理等二十多章內(nèi)容。

          下載2:Python視覺實(shí)戰(zhàn)項(xiàng)目52講
          小白學(xué)視覺公眾號后臺回復(fù):Python視覺實(shí)戰(zhàn)項(xiàng)目即可下載包括圖像分割、口罩檢測、車道線檢測、車輛計(jì)數(shù)、添加眼線、車牌識別、字符識別、情緒檢測、文本內(nèi)容提取、面部識別等31個(gè)視覺實(shí)戰(zhàn)項(xiàng)目,助力快速學(xué)校計(jì)算機(jī)視覺。

          下載3:OpenCV實(shí)戰(zhàn)項(xiàng)目20講
          小白學(xué)視覺公眾號后臺回復(fù):OpenCV實(shí)戰(zhàn)項(xiàng)目20講即可下載含有20個(gè)基于OpenCV實(shí)現(xiàn)20個(gè)實(shí)戰(zhàn)項(xiàng)目,實(shí)現(xiàn)OpenCV學(xué)習(xí)進(jìn)階。

          交流群


          歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器自動(dòng)駕駛、計(jì)算攝影、檢測、分割、識別、醫(yī)學(xué)影像、GAN算法競賽等微信群(以后會逐漸細(xì)分),請掃描下面微信號加群,備注:”昵稱+學(xué)校/公司+研究方向“,例如:”張三 + 上海交大 + 視覺SLAM“。請按照格式備注,否則不予通過。添加成功后會根據(jù)研究方向邀請進(jìn)入相關(guān)微信群。請勿在群內(nèi)發(fā)送廣告,否則會請出群,謝謝理解~


          瀏覽 37
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <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>
                  日韩免费一区 | 欧美日韩高清性爱在线观看 | 免费看成人靠逼 | 欧美黑人大群交舔舔舔 | 无码一区二区三区good |