使用二维向量中的序列设置数组元素时出错

Having an error of setting array element with a sequence in a two dimensional vector

我想用两个for循环计算一个二维向量,每个for循环计算一些参数。
我的输入是:

Temp= array([ 25.,  30.,  50.,  25.,  25.,  25.])
Ir= array([ 1000.,  500.,  1000.,  100.,  200.,  1000.])

在第一个循环中,我计算了一些向量,在内部循环中,我想计算一个大小为 len(V)*N

的矩阵 I(x,t)

问题:我收到以下内循环错误 (I(x,t)):

ValueError: setting an array element with a sequence.

我的错误是什么,我该如何解决。

from math import *
from pylab import *
from numpy import *

Area=243.36
N=6
V = arange(0,0.7,0.01)
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(N)
I0=zeros(N)
I02=zeros(N)
Vt=zeros(N)
I=zeros((len(V),N))
T=zeros(N)

for t in range(0,6):
    T[t] = Temp[t]+273.0
    Vt[t]=(k*T[t])/q
    I0[t]=Is1*((T[t]/Tmeas)**(3/n1))*exp(Eg*((T[t]/Tmeas)-1)/(n1*Vt[t]));
    I02[t]=Is2*((T[t]/Tmeas)**(3/n2))*exp(Eg*((T[t]/Tmeas)-1)/(n2*Vt[t]));
    Iph[t] = Isc_cell*(Ir[t]/1000.0)*(1+(T_co*(Temp[t]-25)));

    for x in range(len(V)):
        I[x,t] = Iph[t] - I0[t]*(exp((V[x]+I[t]*Rs)/(n1*Vt[t]))-1)-I02[t]*(exp((V[x]+I[t]*Rs)/(n2*Vt[t]))-1)-((V[x]+I[t]*Rs)/Rsh);
        x=x+1

    t=t+1

您正在尝试将 1x2 数组(从 I[t] 计算)分配给 1x1 元素 I[x,t]

I[x,t] = Iph[t] - I0[t]*(exp((V[x]+I[t]*Rs)/(n1*Vt[t]))-1)-I02[t]*(exp((V[x]+I[t]*Rs)/(n2*Vt[t]))-1)-((V[x]+I[t]*Rs)/Rsh);
~~~~~~                             ~~~~                                      ~~~~                           ~~~~

那是行不通的。第二个元素应该发生什么?


顺便说一句:您可能不想手动增加循环计数器 xt