我正在尝试创建一个函数,在该函数中,我基于现有文件获取一个新的分数文件,然后使用新的分数文件创建下一个分数文件。你知道吗
给定值为: 1两组输入数据。 2第一年的分数
要了解: 1基于代码计算的新分数 2在下一年使用这些新分数。你知道吗
我得到的是所有年份相同的分数。但是,由于我是python新手,因此无法获得要修改的分数。你知道吗
感谢您的帮助。你知道吗
代码如下:
import numpy as np
import matplotlib.pyplot as plt
#data
soyData = [186.65, 210.22, 283.21, 363.55, 254.74, 244.00]
maxPrecipData = [0.119182,0.143878, 0.043567, 0.129658, 0.158306, 0.199754]
def myFunction(year):
dbaseFraction2 = []
forestFractions2= []
agriFractions2= []
savaFractions2= []
for i in range(37):
for j in range(49):
t21 = -0.00000907728*soyData[year]
t32 = 0.025700691 - 0.128202174*maxPrecipData[year]
transMatrix= np.mat(((t21,0,0), (-t21,-t32,0),(0,t32,0)))
areaMatrixOld = np.mat(((forestFractions2001[i][j],), (agriFractions2001[i][j],), (savaFractions2001[i][j],)))
areaMatrixNew = areaMatrixOld + transMatrix*areaMatrixOld
forestFractions2.append(areaMatrixNew[0])
agriFractions2.append(areaMatrixNew[1])
savaFractions2.append(areaMatrixNew[2])
fractionfile = np.mat(((forestFractions2001[i][j],), (agriFractions2001[i][j],), (savaFractions2001[i][j],), (waterFractions2001[i][j],),))
maxFraction = np.argmax(fractionfile)
dbaseFraction2.append(maxFraction)
maxField = np.reshape(dbaseFraction2, (37,49))
for i in range(37):
for j in range(49):
if maxField [i][j] == 0:
landCover2[i][j] = 20.0
elif maxField [i][j] == 1:
landCover2[i][j] = 21.0
elif maxField [i][j] == 2:
landCover2[i][j] = 22.0
elif maxField [i][j] == 3:
landCover2[i][j] = 23.0
fileName = 'landCover'+str(year+2001)+'.txt'
np.savetxt(fileName,landCover2, fmt='%d')
forest_Fractions2 = np.reshape(forestFractions2,(37,49))
agri_Fractions2 = np.reshape(agriFractions2,(37,49))
sava_Fractions2 = np.reshape(savaFractions2,(37,49))
water_Fractions2 = np.reshape(waterFractions2001,(37,49))
del dbaseFraction2[:]
del forestFractions2[:]
del agriFractions2[:]
del savaFractions2[:]
return
for i in range(30):
myFunction(i)
目前没有回答
相关问题 更多 >
编程相关推荐