다음과 같이 함수를 정의합니다. EmiCtry
, percapita
및 year
은 전역 매개 변수입니다. 다른 shreshold
및 ramprate
을 선택하면 효과를보고 싶습니다.정의 된 함수를 사용하여 루핑하고 이상한 값을 출력합니다.
def annual_emi_scale(shreshold, ramprate):
tmp = EmiCtry
for i in range(177):
for j in range(91):
if percapita[i,j] >= shreshold and year[j] >= 2020:
tmp[i,j] = tmp[i,j] * (1.-ramprate)
adj1 = cdutil.averager(tmp, axis=0,weights='equal',action='sum')
adj2 = cdutil.averager(adj1,axis=0,weights='equal',action='sum')
return adj1, adj2
는 다음 나는 정의 함수와 루프를 수행
emi = np.zeros([25, 91])
cum = np.zeros([5,5])
for ii in range(5):
shre = (ii + 1) * 20
for jj in range(5):
ramp = jj * 0.02
emi[ii*5+jj],cum[ii,jj] = annual_emi_scale(shre, ramp)
출력은 ii
> 0 이상이며, 각 루프 tmp = EmiCtry
전혀 작동하지 않습니다 후 보인다. 즉, ii = 3
의 경우 일 때 tmp = EmiCtry
은 tmp 값을 사용합니다.
그러나 루프 전에 tmp1, tmp2 = annual_emi_scale(80, 0.00)
을 수행하면 결과가 정확합니다. 그러나 루프를 돌릴 때 같은 일이 다시 발생합니다.
EmiCtry
numpy.array()
이다 :
co2EmiCtry = original_data.astype(np.float)
는 "전혀 작동하지 않습니다"를 사용하려면 문제의 매우 유용한 문이 아니다. – kindall
이 코드가 수행해야 할 작업과 결과가 "이상한"이유를 설명해주십시오. – mkrieger1
'annual_emi_scale' 또는'main' 루프에서 사용되는'i'를 의미합니까? – mkrieger1