IndexError:对于double和if“for”状态,标量变量的索引无效

2024-04-19 21:04:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我的主要目的是打印出一个变量的值,这个变量在一个双for loop中,在if-statement下,但是我倾向于得到一个错误IndexError: invalid index to scalar variable.,这是我的代码

import numpy as np

nR = 133
nP  = 255
Pmin = 0.09
Pmax = 20.0
dTime = 0.005

g = np.zeros((nR+1, nP+1), dtype=np.float64)
E01 = np.zeros(nR+1)
LnP = np.zeros(nP+1)


n = nR - 1
l = nP - 1

LnPmax = np.log(Pmax)
LnPmin = np.log(Pmin)
dLnP = (LnPmax - LnPmin)/(l-1)
odt = 1/dTime

for i in range(1, n):
    T1  = E01[i]*dTime
    for k in range(1, l):
        LnPa = T1 + LnP[k]
        ka = int((LnPa - LnPmin)/dLnP + 1)
        if LnPa <= LnPmin:
            ha = 0.0
        elif LnPa >= LnPmax:
            ha = 0.0
        else:
            ha = g[i][ka] + (g[i][ka+1] - g[i][ka])*(LnPa - LnPa[ka])/dLnP
            print ha

每当我试图print ha我得到了一个错误IndexError: invalid index to scalar variable,我已经找到了关于stackoverflow和{}的其他解决方案,但是没有用也许任何人可以帮助我,我将感激:)


Tags: forif错误npzerosnrhaka
1条回答
网友
1楼 · 发布于 2024-04-19 21:04:14

在倒数第二行中,有子表达式

LnPa - LnPa[ka]

LnPa的第一个引用是好的,因为它是一个浮点变量,但第二个不是。您正试图用LnPa[ka]将该浮点变量视为一个列表或类似的列表,方法是用ka索引它。我不知道您的意图(您确实需要添加注释并使变量名更具描述性),因此我不能建议您进行特定的更正。但不知怎么的摆脱了LnPa[ka]。在

另外,最后一行print ha在python3.x中不起作用

^{pr2}$

它可以在任何版本的python中工作。在

相关问题 更多 >