Python “错误”;数组的索引太多“;
我想生成一个2D矩阵Python “错误”;数组的索引太多“;,python,for-loop,matrix,Python,For Loop,Matrix,我想生成一个2D矩阵I[x,t],其中有两个for循环。这是一个70*60矩阵。 我首先计算一行60列的向量。然后,在内部for循环中,对于每个t步骤,我使用x为myV计算矩阵I,这是一个包含一列和70行的向量。 对于I[x,t],我面临以下错误: IndexError: too many indices for array 如果有人帮我改正,我会很高兴的 from math import * from pylab import * from numpy import * N=60 #num
I[x,t]
,其中有两个for循环。这是一个70*60
矩阵。我首先计算一行60列的向量。然后,在内部for循环中,对于每个
t
步骤,我使用x
为myV
计算矩阵I
,这是一个包含一列和70行的向量。对于
I[x,t]
,我面临以下错误:
IndexError: too many indices for array
如果有人帮我改正,我会很高兴的
from math import *
from pylab import *
from numpy import *
N=60 #number of cells
Ir=zeros((1,N))
Ir=Ir+1000.0
Temp=zeros((1,N))
Temp=Temp+25.0
V = arange(0,0.7,0.01)
Area=243.36
ns=1
np=1
Jsc_cell = 0.03785
Isc_cell = Jsc_cell * Area
n1=1.0
J01 = 6.2e-13
Is1 = J01 * Area
n2= 2.0
J02 = 7.3e-9
Is2= J02 * Area
T_co = 0.0005
Rs = 2.7487398e-3
Rsh = 410913.8725
k = 1.38e-23
q = 1.6e-19
Eg=1.11
Tmeas= 273+25.0
Iph=zeros((1,N))
I0=zeros((1,N))
I02=zeros((1,N))
Vt=zeros((1,N))
I=zeros((len(V),N))
P=zeros((len(V),N))
T=zeros((1,N))
Pmpp_cell=zeros((1,N))
Impp_cell=zeros((1,N))
Vmpp_cell=zeros((1,N))
Isc_cell_c=zeros((1,N))
for t in range(0,N):
T[0,t] = Temp[0,t]+273.0
Vt[0,t]=(k*T[0,t])/q
I0[0,t]=Is1*((T[0,t]/Tmeas)**(3/n1))*exp(Eg*((T[0,t]/Tmeas)-1)/(n1*Vt[0,t]));
I02[0,t]=Is2*((T[0,t]/Tmeas)**(3/n2))*exp(Eg*((T[0,t]/Tmeas)-1)/(n2*Vt[0,t]));
Iph[0,t] = Isc_cell*(Ir[0,t]/1000.0)*(1+(T_co*(Temp[0,t]-25)));
for x in range(0,len(V)):
I[x,t] = Iph[0,t] - I0[0,t]*(exp((V[x,0]+I[x,t]*Rs)/(n1*Vt[0,t]))-1)-I02[0,t]*(exp((V[x,0]+I[x,t]*Rs)/(n2*Vt[0,t]))-1)-((V[x,0]+I[x,t]*Rs)/Rsh)
P[x,t] = I[x,t]*V[x,0]
x=x+1
t=t+1
另外,是否有任何解决方案可以避免提前定义参数及其尺寸 运行代码时,我看到变量
V
通过初始化是1D数组:
V = arange(0,0.7,0.01)
但是,在最后计算
I[x,t]
和p[x,t]
时,您使用了V
的二维索引。通过将V[x,0]
替换为V[x]
您的代码完成时不会出现错误。非常感谢亲爱的RaJa。它现在可以工作了,但是V[0,x]
和V[x]
之间有什么区别吗,因为它们都是一维向量?当我刚接触Python的时候,我要求这个来了解更多。我很抱歉,我不能投票,因为我的声誉还不够。请接受我的评论。V[x,0]
是一个二维数组,其中列索引始终为零。您可以通过使用V检查形状来验证。类似(100,)
的形状将指示一维数组,而(100,1)
是二维的,即使它是“一维的”,非常感谢您的解释。