Ошибка, связанная с установкой элемента массива с последовательностью

Я новичок в Python, и я буду благодарен, если кто-то поможет мне со следующей ошибкой:

ValueError: setting an array element with a sequence. 

Я хочу, чтобы программа брала связанные значения из массива Ir на каждом шаге и запускала их в цикле. Я имею в виду, что он должен принимать Ir[0]=0 , Ir[1]=200 ,... и вычислять соответствующие I[0], I[1], ...

 from math import *
from pylab import *
from numpy import *
from scipy import *
Ir=arange(200,1201,200)
Temp=25.0
Area=243.36
Isc_cell = 9.01984039
ns=1
np=1
V = arange(0,0.7,0.01)
n1=1.0
Is1 = 1.5648048e-10
n2= 2.0
Is2= 9.85608e-6
T_co = 0.0005
Rs = 2.7487398e-3
Rsh = 410913.8725
k = 1.38e-23
q = 1.6e-19
Eg=1.11
T= Temp+273.0
Tmeas= 273+25.0
Vt=(k*T)/q

j=range(0,6)
Iph=zeros(6)
I=zeros(6)
#I=zeros(len(V))
I0=Is1*((T/Tmeas)**(3/n1))*exp(Eg*((T/Tmeas)-1)/(n1*Vt));
I02=Is2*((T/Tmeas)**(3/n2))*exp(Eg*((T/Tmeas)-1)/(n2*Vt));
for i in j:
    Iph[i] = Isc_cell*(Ir[i]/1000.0)*(1+(T_co*(Temp-25)));
    I[i] = Iph[i] - I0*(exp((V+I[i]*Rs)/(n1*Vt))-1)-I02*(exp((V+I[i]*Rs)/(n2*Vt))-1)-((V+I[i]*Rs)/Rsh);
    i=i+1

P.S. Я в замешательстве, так как он работает для Iph[i], но имеет ошибку для I[i].


person HAMED    schedule 11.05.2015    source источник
comment
Проблема в том, что I=zeros(6) ожидает, что вы сохраните числа с плавающей запятой в I, но когда вы присваиваете I[i], результатом правого вычисления является массив, что, в свою очередь, вызывает ошибку.   -  person Matt    schedule 11.05.2015


Ответы (1)


Это потому, что V — это массив, и вы забыли использовать индекс. Замените этой строкой для I.

I[i] = Iph[i] - I0*(exp((V[i]+I[i]*Rs)/(n1*Vt))-1)-I02*(exp((V[i]+I[i]*Rs)/(n2*Vt))-1)-((V[i]+I[i]*Rs)/Rsh)
person cosmoscalibur    schedule 11.05.2015
comment
Большое спасибо. Это было ошибкой, и я должен сделать его двухмерным для своей цели. извините, что я не могу проголосовать, так как моей репутации недостаточно. - person HAMED; 11.05.2015