一个用于python的方程式解析器/计算器模块。
kharazmi的Python项目详细描述
哈拉兹米
Kharazmi是Khwarizmi(al-Khwarizmi,Algorithmi)的波斯语发音,是python的一个方程式解析器/计算器模块。在
它的主要目的是提供一种简单的方法,从用户那里得到方程,并在自己的数据上运行它们,而无需使用
eval
并且可以在不同的数据类型(number、numpy数组等)上使用它
目前它支持:
- 基本数学运算(+-*/^)
- 数值变量(int、float、complex)
- 可插拔函数
安装
只需使用pip安装:
pip install kharazmi
请记住,Kharazmi使用Python type annotations (PEP 484),并且 f-Strings (PEP 498)所以您需要python3.6或更高版本。在
使用
基本用法
Kharazmi提供了一个简单而强大的API。首先你有EquationParser
,哈拉兹米的核心。
这是你需要担心的主要类。只需实例化它并将用户的输入传递到其parse
方法:
所有表达式都是kharazmi.models.BaseExpression
类的子类。你可以像使用python一样使用它们
包含整数的变量,例如:
expression1=parser.parse("3*x - y")expression2=parser.parse("z")expression3=expression1/expression2
您甚至可以使用普通python代码构建表达式:
x=parser.parse("x")expression4=2*x+4
BaseExpression
类提供一个evaluate
方法。它允许您计算给定值的表达式的值
提供变量:
expression5=parser.parse("2*x + 4")expression5.evaluate(x=2)
因为Kharazmi
在幕后使用了python数学运算符(+-*/^),所以您可以传递任何支持这些运算符的值
操作并仍然得到正确的结果,例如:可以传递numpy数组:
importnumpyasnpexpression6=parser.parse("2*x + y")x=np.ones((2,2))y=np.identity(2)expression6.evaluate(x=x,y=y)
最后,如果您有一个不知道其变量的表达式,您可以使用variables
获得它们的列表
表达式的属性。在
使用函数
如果您想创建更复杂的表达式,比如sin(x)^2 + cos(x)^2
,该怎么办。在
首先,您必须告诉kharazmi
您的函数列表:
frommathimportsin,cosfromkharazmiimportregister_functionregister_function("sin",sin)register_function("cos",cos)expression7=parser.parse("sin(x)^2 + cos(x)^2")
您甚至可以使用多个输入的函数:
register_function("min",min)expression7=parser.parse("1 + min(x, y)")
如果您想使用python的内置数学函数,可以使用kharazmi.activate_builtin_math
。调用此函数
将注册math
中的所有内置函数,以及min
、max
、round
和{
fromkharazmiimportactivate_builtin_mathactivate_builtin_math()expression8=parser.parse("log2(8)")
用作模块
您可以使用python -m kharazmi
将kharazmi
作为一个模块运行,这将运行一个类似REPL的程序,允许您输入
表达式,看看如何在代码中做同样的事情,换句话说,kharazmi
是如何理解输入的,以及
评估一下。在
它也支持所有的数学函数。在
它主要用于调试和测试目的,但是如果您想了解kharazmi
是如何工作的,它就在那里,
我建议从那里开始。在
- 项目
标签: