如何修复类型 'int' 没有 len()?
How to fix type 'int' has no len()?
我不明白这段代码有什么问题。有人能帮助我吗?
这是从 1 到无穷大的 Pareto II 型被积函数,a 和 b 是分布的参数。 TypeError: object of type 'int' has no len() -> 这是我尝试计算 E
时的错误
import numpy as np
from scipy.integrate import quad
from mpmath import *
def integrand(a, b, x):
return x*a(b**a)/((x+1)**a)
a = 3
b = 2
E = quad(integrand, 1, np.inf, args=(a, b))
E
删除行
from mpmath import *
来自您的代码。
mpmath
has a quad
函数,所以当您执行 from mpmath import *
时,您将覆盖从 SciPy 导入的名称。你收到错误 TypeError: object of type 'int' has no len()
因为 mpmath
版本的 quad
期望第二个参数具有 [a, b]
的形式,但你传入了 1
.
这对我来说似乎是导入错误,scipy 和 mpmath 都有 quad 方法的实现,因此要使代码正常工作,必须删除 mpmath 导入语句。
我可以 运行 下面的代码.. 上限的大值会溢出
import numpy as np
from scipy import integrate
#from scipy.integrate import quad
from mpmath import *
def intergrand(a, b, x):
return x*a*(b**a)/((x+b)**a)
a = 3
b = 2
E = integrate.quad(intergrand,1, 100, args=(a, b))
print(E)
我不明白这段代码有什么问题。有人能帮助我吗? 这是从 1 到无穷大的 Pareto II 型被积函数,a 和 b 是分布的参数。 TypeError: object of type 'int' has no len() -> 这是我尝试计算 E
时的错误import numpy as np
from scipy.integrate import quad
from mpmath import *
def integrand(a, b, x):
return x*a(b**a)/((x+1)**a)
a = 3
b = 2
E = quad(integrand, 1, np.inf, args=(a, b))
E
删除行
from mpmath import *
来自您的代码。
mpmath
has a quad
函数,所以当您执行 from mpmath import *
时,您将覆盖从 SciPy 导入的名称。你收到错误 TypeError: object of type 'int' has no len()
因为 mpmath
版本的 quad
期望第二个参数具有 [a, b]
的形式,但你传入了 1
.
这对我来说似乎是导入错误,scipy 和 mpmath 都有 quad 方法的实现,因此要使代码正常工作,必须删除 mpmath 导入语句。 我可以 运行 下面的代码.. 上限的大值会溢出
import numpy as np
from scipy import integrate
#from scipy.integrate import quad
from mpmath import *
def intergrand(a, b, x):
return x*a*(b**a)/((x+b)**a)
a = 3
b = 2
E = integrate.quad(intergrand,1, 100, args=(a, b))
print(E)