我的主要目的是打印出一个变量的值,该变量位于for loop
的{{1}}和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
和google
上查找其他解决方案,但也许任何人都无法做到帮助我,我将感谢:)
答案 0 :(得分:0)
在倒数第二行中,您有子表达式
LnPa - LnPa[ka]
第一次引用LnPa
很好,因为那是一个浮点变量,但第二个不是。您正尝试将该浮动变量视为列表,或者使用LnPa[ka]
将其视为某些列表,方法是使用ka
对其进行索引。我不知道你的意图(你真的需要添加评论并使你的变量名称更具描述性),所以我不能推荐一个特定的修正。但不知何故摆脱了LnPa[ka]
。
此外,最后一行print ha
在python 3.x中不起作用。如果用
print(ha)
它可以在任何版本的python中使用。