昊明有态度|这个开源库用一行代码帮你搞定,Python代码转Latex公式

机器之心报道
【昊明有态度|这个开源库用一行代码帮你搞定,Python代码转Latex公式】编辑:小舟
你的代码中有数学公式吗?
数学是数据科学和机器学习的重要基础 , 数学运算的结果对于机器学习项目而言是至关重要的 。 在编写代码时 , 我们常常需要定义数学公式的计算形式 。 像S=r^2这样简单的数学公式 , 大概不会出现拼写错误 。 但如果是下面这样的公式呢?
昊明有态度|这个开源库用一行代码帮你搞定,Python代码转Latex公式
文章图片
图源:知乎用户@马啃菠箩
还记得数学老师密密麻麻的板书吗?人们习惯于手写公式的运算过程 。 而如果计算机编程语言能够显示出类似于手写公式的计算过程 , 检查公式运算是否准确就可以轻松多了吧 。
近日 , GitHub上一个名叫handcalcs的开源库就解决了这个问题 。
项目地址:https://github.com/connorferster/handcalcs
handcalcs库:将Python计算代码转换为Latex公式
handcalcs库可将Python计算代码自动渲染为Latex公式 , 呈现方式类似于手写的公式计算:先编写符号公式 , 再代入具体数字 , 最后得出结果 。
昊明有态度|这个开源库用一行代码帮你搞定,Python代码转Latex公式
文章图片
正如上面的演示样例所示 , 计算机能够识别的公式形式是:
昊明有态度|这个开源库用一行代码帮你搞定,Python代码转Latex公式
文章图片
而人们更习惯的是如下形式的数学公式:
昊明有态度|这个开源库用一行代码帮你搞定,Python代码转Latex公式
文章图片
handcalcs的功能就是 , 将数学公式和运算过程以人们更容易理解的形式展示出来 。
数学计算的结果往往会影响后续代码的运行过程 , 而复杂的数学公式更容不得一点错漏 , 因此对于包含较多复杂数学公式的Python代码 , 用handcalcs进行自查或许是有必要的 。
如何使用handcalcs?
那么 , 这个开源库要如何应用呢?
基本用法1:Jupyter单元格魔法函数
handcalcs的设计初衷是在JupyterNotebook或JupyterLab中作为单元格魔法函数来使用 。
首先 , 引入handcalcs模块并运行单元格:
importhandcalcs.render
接下来 , 在想要使用handcalcs的单元格上面添加一行魔法函数%%render:
%%render
例如:
%%rendera=2b=3c=2*a+b/3
如果系统安装了Latex环境 , 你还可以将notebook导出成pdf格式文件 。
基本用法2:函数装饰器@handcalc()
除了在Jupytercell中使用外 , 在Python的函数中也可以使用handcalcs 。
首先导入@handcalc()装饰器:
fromhandcalcs.decoratorimporthandcalc
然后编写函数 。 注意:函数必须returnlocals():
@handcalc()defmy_calc(x,y,z):a=2*x/yb=3*ac=(a+b)/zreturnlocals()
@handcalc(left:str='''',right:str='''',jupyter_display:bool=False)
返回一个由(latex_code:str,locals:dict)组成的元组 , 其中locals是函数命名空间范围内所有变量的字典 。
其他功能
有些公式的参数量较多 , 如果按照常规的格式显示在一列 , 会浪费大量空间 。 而使用handcalcs , 只需添加注释标签#Parameters就能让参数以三列的形式显示出来:
昊明有态度|这个开源库用一行代码帮你搞定,Python代码转Latex公式
文章图片
而有些公式的计算过程非常繁琐 , 也会占用大量显示空间 , 只需使用标签#Short就能让运算过程的显示行数减少:
反之 , 如果你比较喜欢推导等式对齐的方式 , 可以使用#Long标签显示 。
有时你并不需要代入数值计算 , 只需要以符号的形式显示数学计算公式 。 那么 , 你需要使用#Symbolic标签:


推荐阅读