Python 如何处理被零除的函数

Python 如何处理被零除的函数,python,numpy,divide-by-zero,Python,Numpy,Divide By Zero,我尝试使用python/numpy的一些模型: f(x) = 1 / (exp(x) - 1) 其中x可以是-5到+5之间的任意值 x可以是零,在我的模拟过程中确实发生了这种情况,导致f(x)趋于无穷大,返回一个nan+1jnan 因为我想在以后使用这个计算的结果,例如FFT,这就产生了一个大问题,因为FFT例程不能处理输入中的NAN 请问有什么建议的处理方法吗? e、 g.将逻辑放在:如果x==0:返回0 或 e、 g.如果x等于零,则将x移动0.00000001%,以避免此问题 谢谢您只

我尝试使用python/numpy的一些模型:

 f(x) = 1 / (exp(x) - 1)
其中x可以是-5到+5之间的任意值

x可以是零,在我的模拟过程中确实发生了这种情况,导致f(x)趋于无穷大,返回一个nan+1jnan

因为我想在以后使用这个计算的结果,例如FFT,这就产生了一个大问题,因为FFT例程不能处理输入中的NAN

请问有什么建议的处理方法吗? e、 g.将逻辑放在:如果x==0:返回0 或 e、 g.如果x等于零,则将x移动0.00000001%,以避免此问题


谢谢

您只需使用continue语句即可避免此问题:

def f(x):
    return 1 / (exp(x) - 1)

f_values = {}
for i in range(-5,5):
    if i == 0: continue
    f_values[i] = f(i)

print f_values
>>> {1: 0.5819767068693265, 2: 0.15651764274966565, 3: 0.05239569649125595, 4: 0.01865736036377405, -2: -1.1565176427496657, -5: -1.0067836549063043, -4: -1.018657360363774, -3: -1.052395696491256, -1: -1.5819767068693265}


FFT(f_values)

在这里,每当出现x=0的值时,循环就会简单地避开f(x)函数并迭代到下一个值。

这可能有用吗?谢谢,np.nan_to_num很有用,但我想将inf设置为0,而不是任意的高数值。不过我可以手动完成。