如何获得同情点的浮点值?
How to get the float values for a sympy point?
我有如下一段代码
from sympy import Point, Line
l1 = Line((3,5,-2), (1,-1,4))
p1 = Point3D((3, 7, 9))
intersection_p = p1.intersection(l1)[0]
print(intersection_p)
我明白了
Point3D(30/7, 62/7, -41/7)
但是,我想要浮点值,而不是有理数。
[4.285714285714286, 8.857142857142858, -5.857142857142857]
我已经这样做了,它给了我想要的输出。
intersection1 = [float(i) for i in p1.intersection(l1)[0].args]
但我想知道是否有任何 sympy 方法可以 converts/extracts Point3D
对象的坐标值作为 float
.
您可以像使用正则符号表达式一样使用 evalf()
。您可以使用 tuple(p1.evalf())
或 list(p1.evalf())
以更标准的 Python 方式获得数字。
from sympy import Point3D, sqrt, pi
p1 = Point3D((sqrt(2), 7, pi/2))
print(p1)
print(p1.evalf())
输出:
Point3D(sqrt(2), 7, pi/2)
Point3D(1.4142135623731, 7.0, 1.5707963267949)
注意evalf()
接受一个参数表示位数。
我有如下一段代码
from sympy import Point, Line
l1 = Line((3,5,-2), (1,-1,4))
p1 = Point3D((3, 7, 9))
intersection_p = p1.intersection(l1)[0]
print(intersection_p)
我明白了
Point3D(30/7, 62/7, -41/7)
但是,我想要浮点值,而不是有理数。
[4.285714285714286, 8.857142857142858, -5.857142857142857]
我已经这样做了,它给了我想要的输出。
intersection1 = [float(i) for i in p1.intersection(l1)[0].args]
但我想知道是否有任何 sympy 方法可以 converts/extracts Point3D
对象的坐标值作为 float
.
您可以像使用正则符号表达式一样使用 evalf()
。您可以使用 tuple(p1.evalf())
或 list(p1.evalf())
以更标准的 Python 方式获得数字。
from sympy import Point3D, sqrt, pi
p1 = Point3D((sqrt(2), 7, pi/2))
print(p1)
print(p1.evalf())
输出:
Point3D(sqrt(2), 7, pi/2)
Point3D(1.4142135623731, 7.0, 1.5707963267949)
注意evalf()
接受一个参数表示位数。