【发布时间】:2018-07-13 22:02:34
【问题描述】:
我的代码如下(在为循环设置值之前大约有 100 行似乎可以正常工作,所以我只包含了必要的值):
fraction=np.array([0.5, 0.3, 0.2])
tauC=np.array([30.,300.,100000.])
dC_memory=np.zeros((1,3))
dC_frac=np.zeros((1,3))
for j in range(0,ens_num):
dC_memory=np.zeros((1,3))
for n in range(0,N-1):
# C02 Concentration
for m in range(0,3):
dC_frac[m]=fraction[m]*E[j,n+1]-dC_memory[m]/(tauC[m])
dC_memory[m]=dC_memory[m]+dC_frac[m]*dt
dC[j,n]=dC[j,n]+dC_frac[m]*dt
C[j,n+1]=C[j,n]+dC[j,n]
# Temperature
dT[j,n]=((T2eq*math.log(C[j,n+1]/Cpi)/math.log(2))-T[j,n])*(dt/tauT)
T[j,n+1]=T[j,n]+dT[j,n]
# Adaptation
dTadp[j,n]=(T[j,n]-Tadp[j,n])*dt/tauA
Tadp[j,n+1]=Tadp[j,n]+dTadp[j,n]
Tdiff[j,n+1]=0.5*(abs(T[j,n]-Tadp[j,n+1])+T[j,n]-Tadp[j,n+1])
if yi[j,n+1]+xi0[k]<=mu:
count[j]=count[j]+1/N
当我运行它时,我在dC[j,n]=dC[j,n]+dC_frac[m]*dt 的行上得到错误提示
ValueError:使用序列设置数组元素。
我是 python 新手,但我知道 python 索引从 0 开始,但我不明白为什么这段代码会停在这里。
【问题讨论】:
-
dC到底是什么?您永远不会在发布的代码中初始化它。我怀疑这是一个普通的 Python 列表(而不是 numpy 数组),在这种情况下dC[j,n]无效(您必须使用dC[j][n]进行多维索引)。 -
打印数据,(条件)表达式结果,任何相关的东西,都是一种有效的调试技术。您可以在违规行或catch the error 之前打印内容,然后在 except 套件中打印。它将为您提供更多关于正在发生的事情的线索。
标签: python arrays loops numpy indexing