Python 集成会导致类型错误:';numpy.float64';对象不能解释为整数

Python 集成会导致类型错误:';numpy.float64';对象不能解释为整数,python,python-3.x,numpy,syntax-error,Python,Python 3.x,Numpy,Syntax Error,亲爱的朋友,我写了一个巨大的代码,运行Python后发送错误: 对不起,如果这个问题是业余的 dacdm = 1/(z+1) * cdm TypeError: 'numpy.float64' object cannot be interpreted as an integer 这是错误的最后两句话。Python错误地提到了我的代码的以下部分,因此我决定错误来自这里: def H_LCDM(z, H0, DM0): lcdm = 1/(H0 * sqrt(DM0 * (1 + z

亲爱的朋友,我写了一个巨大的代码,运行Python后发送错误: 对不起,如果这个问题是业余的

dacdm = 1/(z+1) * cdm
TypeError: 'numpy.float64' object cannot be interpreted as an integer
这是错误的最后两句话。Python错误地提到了我的代码的以下部分,因此我决定错误来自这里:

def H_LCDM(z, H0, DM0):
        lcdm = 1/(H0 * sqrt(DM0 * (1 + z)**3 + (1 - DM0)))
        return lcdm

def DA_LCDM(z, DM0, H0):
         cdm = quad(H_LCDM, 0, z, args = (H0, DM0))
         dacdm = 1/(z+1) * cdm
         return dacdm


def fg(gg, DM0, H0, A, alpha, b, Omb):
        h = H0/100
        f_th = (0.824 /(1 + 0.19 * (h)**(1/2)))* (Omb/DM0) * (DA_LCDM(zgas[gg], H0, DM0)/DA(zgas[gg], DM0, H0, A, alpha, b))
        fgasth = ((fgas[gg] - f_th)/siggas[gg])**2
        return fgasth

def fgasmass(DM0, H0, A, alpha, b, Omb):
    h = H0/100
    num=0
    for gsgs in range(len(zgas)):
        num = num + fg(gsgs, DM0, H0, A, alpha, b, Omb)
        return num + ((Omb * h**2 - 0.0214)/0.002)**2 + ((h - 0.72)/0.08)**2
我无法找到问题的根源

有关更多信息,我将整个错误放在这里:

 Traceback (most recent call last):
 File "C:\Users\esadr21\Desktop\Polytropic\Polytropic datasets.py", line 348, in <module>
 L = np.exp(-0.5 * (TOTAL(DM0n[i], H0n[i], An[i], alphan[i], bn[i], Mn[i], Ombn[i]) - TOTAL(DM0o[i-1], H0o[i-1], Ao[i-1], alphao[i-1], bo[i-1], Mo[i-1], Ombo[i-1])))    # L = exp(-( x^2 )/2)
  File "C:\Users\esadr21\Desktop\Polytropic\Polytropic datasets.py", line 328, in TOTAL
 total =  SN(DM0, H0, A, alpha, b, M) + BAO(DM0, H0, A, alpha, b, Omb) +  CMB(Omb, H0, DM0, A, alpha, b) + CC(DM0, H0, A, alpha, b) + SGL(DM0, H0, A,  alpha, b) + fgas(DM0, H0, A, alpha, b, Omb)
  File "C:\Users\esadr21\Desktop\Polytropic\Polytropic datasets.py", line 322, in fgas
num = num + fg(gsgs, DM0, H0, A, alpha, b, Omb)
 File "C:\Users\esadr21\Desktop\Polytropic\Polytropic datasets.py", line 315, in fg
f_th = (0.824 /(1 + 0.19 * sqrt(h)))* (Omb/DM0) * (DA_LCDM(zgas[gg], H0, DM0)/DA(zgas[gg], DM0, H0, A, alpha, b))
 File "C:\Users\esadr21\Desktop\Polytropic\Polytropic datasets.py", line 163, in DA_LCDM
dacdm = 1/(z+1) * cdm
TypeError: 'numpy.float64' object cannot be interpreted as an integer
回溯(最近一次呼叫最后一次):
文件“C:\Users\esadr21\Desktop\Polytropic\Polytropic datasets.py”,第348行,在
L=np.exp(-0.5*(总计(DM0n[i]、H0n[i]、An[i]、alphan[i]、bn[i]、Mn[i]、Ombn[i])-总计(DM0o[i-1]、H0o[i-1]、Ao[i-1]、alphao[i-1]、bo[i-1]、Mo[i-1]、Ombo[i-1])(L=exp(-x^2)/2)
文件“C:\Users\esadr21\Desktop\Polytropic\Polytropic datasets.py”,共328行
总计=SN(DM0,H0,A,alpha,b,M)+BAO(DM0,H0,A,alpha,b,Omb)+CMB(Omb,H0,DM0,A,alpha,b)+CC(DM0,H0,A,alpha,b)+SGL(DM0,H0,A,alpha,b)+FGA(DM0,H0,A,A,alpha,b,Omb)
fgas中的文件“C:\Users\esadr21\Desktop\Polytropic\Polytropic datasets.py”,第322行
num=num+fg(GSG、DM0、H0、A、alpha、b、Omb)
文件“C:\Users\esadr21\Desktop\Polytropic\Polytropic datasets.py”,第315行,前景
f_th=(0.824/(1+0.19*sqrt(h))*(Omb/DM0)*(DA_LCDM(zgas[gg],H0,DM0)/DA(zgas[gg],DM0,H0,A,alpha,b))
文件“C:\Users\esadr21\Desktop\Polytropic\Polytropic datasets.py”,第163行,位于DAU LCDM中
dacdm=1/(z+1)*cdm
TypeError:“numpy.float64”对象不能解释为整数

非常感谢。cdm是一个序列,而不是一个数字。也许
quad
是,它返回最多5个元素的元组,而不仅仅是一个整数<代码>*具有一个序列,它期望一个整数表示重复该序列的次数;例如,我们有

>>> 3 * (1, 2, 3)
(1, 2, 3, 1, 2, 3, 1, 2, 3)
如果
quad
scipy.integrate.quad
,则整数是元组的第一个元素,因此如果需要整数,请将其从结果中索引出来:

#                                         vvv
cdm = quad(H_LCDM, 0, z, args = (H0, DM0))[0]

另外,以后,请阅读您使用的功能的文档。

ahhh,谢谢。我总是用这个,这次。。。愚蠢的错误。非常感谢你。写了500行的数学代码后,我的眼睛都快晕过去了。