我是python新手,我需要在我的硕士论文中使用它
第一个名为p_nfw_mean2的函数可以工作,它使用巨像,一个用于宇宙学计算的python工具包。我不明白为什么当我调用使用第一个p_nfw_意味2的函数clumping_factor时,我得到:
ValueError:包含多个元素的数组的真值不明确。使用a.any()或a.all()
问题是聚束因子中的p_nfw_mean2,因为如果我删除它,代码就可以完美地工作
以下是功能:
#Mean of NFW profile square
def p_nfw_mean2(z, Mvir):
Rvir = peaks.lagrangianR(Mvir)
cvir, mask = concentration.modelDiemer19(Mvir, z)
p_nfw = profile_nfw.NFWProfile(Mvir, cvir, z, mdef = 'vir')
func = lambda r: p_nfw.density(r)**2 * r**2
result, none = integrate.quadrature(func, 0.0, Rvir, tol=1e-7, rtol=1e-7, maxiter=1000)
return 4.0 * pi * result
#Clumping factor
def clumping_factor(z):
func = lambda Mvir, z: (ro_m / Mvir) * mass_function.massFunction(Mvir, z, q_in='M', q_out='M2dndM', mdef='fof', model='sheth99') * p_nfw_mean2(z, Mvir)
result, none = integrate.quadrature(func, Mvir_min, Mvir_max, args=(z,), tol=1e-7, rtol=1e-7, maxiter=1000)
return result
我得到:
File "mynotebook.py", line 11, in <module>
print(mm.clumping_factor(z))
File "/Users/Noemi/Desktop/mymodule.py", line 86, in clumping_factor
result, none = integrate.quadrature(func, Mvir_min, Mvir_max, args=(z,), tol=1e-7, rtol=1e-7, maxiter=1000)
File "/usr/local/lib/python3.7/site-packages/scipy/integrate/quadrature.py", line 242, in quadrature
newval = fixed_quad(vfunc, a, b, (), n)[0]
File "/usr/local/lib/python3.7/site-packages/scipy/integrate/quadrature.py", line 123, in fixed_quad
return (b-a)/2.0 * np.sum(w*func(y, *args), axis=-1), None
File "/usr/local/lib/python3.7/site-packages/scipy/integrate/quadrature.py", line 153, in vfunc
return func(x, *args)
File "/Users/Noemi/Desktop/mymodule.py", line 85, in <lambda>
func = lambda Mvir, z: (ro_m / Mvir) * mass_function.massFunction(Mvir, z, q_in='M', q_out='M2dndM', mdef='fof', model='sheth99') * p_nfw_mean2(z, Mvir)
File "/Users/Noemi/Desktop/mymodule.py", line 80, in p_nfw_mean2
result, none = integrate.quadrature(func, 0.0, Rvir, tol=1e-7, rtol=1e-7, maxiter=1000)
File "/usr/local/lib/python3.7/site-packages/scipy/integrate/quadrature.py", line 242, in quadrature
newval = fixed_quad(vfunc, a, b, (), n)[0]
File "/usr/local/lib/python3.7/site-packages/scipy/integrate/quadrature.py", line 119, in fixed_quad
if np.isinf(a) or np.isinf(b):
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
也许这和numpy有关
非常感谢
目前没有回答
相关问题 更多 >
编程相关推荐