【问题标题】:dealing with inf in list处理列表中的 inf
【发布时间】:2016-12-31 19:54:47
【问题描述】:

我有一个列表,我正在尝试解决一个变量,但由于我在列表中的某些元素中有 inf,所以它不起作用。如何处理值中的 inf 以便求解变量 m?当我运行代码时,它显示“无法将 0 转换为 int”,因此求解命令与 A 列表中的 inf 值存在问题。

from sympy import *
from numpy import inf
m = var('m')
A = [inf*m - 1, inf*m - 2, .1122*m - 7, 0.054*m - 8]
m = [solve(eq,m) for eq in A]

【问题讨论】:

    标签: python list numpy infinity


    【解决方案1】:

    混合sympynumpy 通常不是一个好主意。 Sympy 使用oo 表示无穷大。您可以使用.subsinf 替换为oo

    from sympy import *
    from numpy import inf
    m = var('m')
    A = [inf*m - 1, inf*m - 2, .1122*m - 7, 0.054*m - 8]
    sol = [solve(eq.subs(inf, oo), m) for eq in A]
    

    sol[[nan], [nan], [62.3885918003565], [148.148148148148]]

    【讨论】:

    • 实际上 A 列表是一个函数的输出,为了简单起见,我没有包含它。 A 的列表中包含我最初发布的 inf,所以当涉及到 inf 时,有没有办法获得 nan?
    • 包含尽可能接近实际问题的代码总是一个好主意。我已更改代码以将inf 替换为oo,但我仍然建议解决问题的最佳方法是避免混合numpysympy(因此将返回此列表的函数更改为使用oo 而不是inf)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多