在Python中如何循环一个序列以使用连续的数据

2024-10-02 20:33:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试创建一个函数,在该函数中,我基于现有文件获取一个新的分数文件,然后使用新的分数文件创建下一个分数文件。你知道吗

给定值为: 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)

Tags: infornprangeyear分数appendreshape