gpt4 book ai didi

python - 检测变量是否为 sympy 类型

转载 作者:太空宇宙 更新时间:2023-11-03 13:16:04 25 4
gpt4 key购买 nike

我有一个变量,它可能是也可能不是 sympy 类。我想将它转换为 float ,但我无法以一般方式执行此操作:

$ python
Python 2.7.3 (default, Dec 18 2014, 19:10:20)
[GCC 4.6.3] on linux2
>>> import sympy
>>> x = sympy.sqrt(2)
>>> type(x)
<class 'sympy.core.power.Pow'>
>>> y = 1 + x
>>> type(y)
<class 'sympy.core.add.Add'>
>>> z = 3 * x
>>> type(z)
<class 'sympy.core.mul.Mul'>
>>> if isinstance(z, sympy.core):
... z = z.evalf(50) # 50 dp
...
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: isinstance() arg 2 must be a class, type, or tuple of classes and types

我将测试 xyz 转换为 float 。请注意,我不能不检查就在 xyz 上运行 evalf(),因为它们可能已经是整数或 float ,这会引发异常。


sympy.sympify() 遗憾的是不会转换为 float 。如果是这样,那将是解决我的问题的理想方法:

>>> sympy.sympify(z)
3*sqrt(2)
>>> type(sympy.sympify(z))
<class 'sympy.core.mul.Mul'>

最佳答案

所有 sympy 对象都继承自 sympy.Basic。要以数字方式评估 sympy 表达式,只需使用 .n()

In [1]: import sympy

In [2]: x = sympy.sqrt(2)

In [3]: x
Out[3]: sqrt(2)

In [4]: x.n()
Out[4]: 1.41421356237310

In [5]: if (isinstance(x, sympy.Basic)):
...: print(x.n())
...:
1.41421356237310

关于python - 检测变量是否为 sympy 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30023064/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com