Py学习  »  Python

Handcalcs,让python科学计算过程更清晰

新语数据故事汇 • 2 周前 • 111 次点击  

当你的数据分析过程或算法代码中充斥着数学计算和复杂公式时,是否曾感到头昏脑胀,难以理清计算过程?难道你不曾梦想过一种方法,能够让这些计算过程变得清晰易懂,甚至近乎魔法般简单?幸运的是,这样的神奇工具已经出现了——它就是Handcalcs。Handcalcs是一个令人惊叹的Python库,它不仅能够让数值计算过程变得清晰可视,而且还能让你轻松理解和解释这些复杂的计算。让我们一起揭开Handcalcs的神秘面纱,探索如何用它让Python计算过程变得更加清晰。

Handcalcs 是什么

Handcalcs 是一个非常实用的 Python 库,它能够让数值计算过程更加清晰易懂。该库适用于科学/工程计算、教育/教学以及数据分析等多个领域,有助于开发者更好地理解和解释计算过程。

我们看一下简单的示例:

import handcalcs.renderfrom math import sqrt, pi

%%rendera=3b=-10c=2x = -b + sqrt(b**2 - 4*a*c)/(2*a)

安装handcalcs

pip install handcalcs

基本用法1:魔法指令渲染和转化LaTex(%%render、%%tex)

handcalcs 可以作为 Jupyter Notebook 或 Jupyter Lab 或SmartNotebook中的单元格魔法指令使用。%%render 魔法指令渲染成公式展示输出;而%%tex魔法指令将表达式转换LaTex 公式表达。

首先,导入该模块并运行单元格:

import handcalcs.renderfrom math import sqrt, pi

使用%%reader的示例:

%%rendera = 2b = 3c = 2*a + b/3

使用%%tex的示例:

%%texa = 2 / 3 * sqrt(pi)

基本用法2:装饰器的方式使用,@handcalc()

导入@handcalc()装饰器:

from handcalcs.decorator import handcalc

具体的装饰器参照上图的说明。下面一个示例:

@handcalc(jupyter_display=True)def my_calc(x :float,y:float,z:float):  a=2*x  b=3*a/z+sqrt(a+y/2)  c=a+b  return c
result=my_calc(2.3,3.2,1.2)
print(result)

符号数学计算sympy的支持

Sympy允许对代数表达式进行符号操作、求解和积分。如果您需要处理Sympy表达式或方程以进行计算,请使用handcalcs来处理您的结果表达式替换和计算。

import sympy as spimport handcalcs.rendera,b,c=sp.symbols("a b c")d= a**2 +b*af= sp.integrate(d,a)f

%%render sympya=5b=10x=f

下标(Subscripts)支持

当在变量名中使用下划线(_)时,变量名中的下标会自动生成。对于每个在系列中使用的单独下划线,都会嵌套生成子下标。

%%rendera_1=10x_i=200

更为详细的帮助参考官方文档:https://github.com/connorferster/handcalcs

Handcalcs 的特征和应用场景:

主要特征如下

  • 手写风格:Handcalcs 将计算过程转换为类似手写计算的格式,包括数学符号、单位、注释等,使其更易于阅读和理解。

  • Notebook 集成:Handcalcs 可以将计算过程直接嵌入到 Jupyter Notebook 中,方便交互式计算和结果展示。

  • LaTeX 支持:Handcalcs 支持 LaTeX 语法,可以生成高质量的数学公式。

  • 自定义格式:Handcalcs 支持自定义输出格式,例如字体、颜色、间距等。

应用场景如下:

  • 数据分析:Handcalcs 可以将数据分析过程中的计算步骤可视化,方便解释和交流。
  • 科学/工程计算:Handcalcs 可以使科学。工程计算过程更加清晰,方便调试和理解。
  •  教育和教学:Handcalcs 可以帮助学生更好地理解数学和科学计算过程。


Handcalcs 是一款非常实用的 Python 库,能够让数值计算过程更加清晰易懂。该库适用于科学和工程计算、教育和教学、以及数据分析等多个领域,有助于开发者更好地理解和解释计算过程。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/169591
 
111 次点击