操作数不能与形状一起广播

时间:2019-12-04 18:18:35

标签: python python-3.x broadcasting

在我的水文学学位中,我使用Python创建了一个核心模型以使用if语句等来计算流量值。然后,我使用该核心模型以相同的程序来计算我所在地区使用不同参数的不同土地利用中的流量每种土地用途。当我运行模型时,我得到的错误操作数不能与形状(730,)(1095,)一起广播。我在这里发布一些代码,使其更易于理解。

def model_core(rainfall, pet, fieldcap, evapres,rootd, gtcond, soilcond, soilsat, soilstor, gtstor):

    for i in range (len(rainfall)):
        soilstor = soilstor + p
        if soilstor > soilsat:
            overlandflow = soilstor - soilsat
            soilstor = soilstor - overlandflow
            if overlandflow > (ae * evapres):    #!!! because the same value of evaporation cant have the same effect on moving and stagnant water
                overlandflow = overlandflow - ae * evapres
            else:        
                overlandflow = 0
        else:
            overlandflow = 0
                                                #!!! is it correct to use AE for cases of  either evaporation or transpiration

        if soilstor > ae:                       # transpiration process
            soilstor = soilstor - ae            # the plants absorb some of the water with their root system thus removing it
        else:                                   #        from the current system
            soilstor  = 0


        if soilstor > fieldcap:                              
            interflow = interflowct * (soilstor - fieldcap)
            soilstor = soilstor - interflow
        else:
            interflow = 0


        if soilstor > rootd:
            percolation = (soilstor - rootd) * soilcond                  

            soilstor = soilstor - percolation
            gtstor = gtstor + percolation    
            baseflow = gtstor * gtcond
            gtstor = gtstor - baseflow
        else:
            percolation = 0

        baseflow = gtstor * gtcond
        gtstor = gtstor - baseflow        

        simflow = overlandflow + interflow + baseflow
        new_flow.append(simflow)
    return(np.array(new_flow))

def model(rainfall, pet, parameters.....):   
    wood_flow = model_core(rainfall*woodcover, pet*woodcover*woodaepe, rootd*woodrootd, fieldcap, evapres, gtcond, soilcond , soilsat, soilstor, gtsat, gtstor)
    grass_flow = model_core(rainfall*grasscover, pet*grasscover*grassaepe, rootd*grassrootd, fieldcap, evapres, gtcond, soilcond, soilsat, soilstor, gtsat, gtstor)
    arable_flow = model_core(rainfall*arabcover, pet*arabcover*arabaepe, rootd*arabrootd, fieldcap, evapres, gtcond, soilcond, soilsat, soilstor, gtsat, gtstor)
    urban_flow = model_core(rainfall*urbancover, pet*urbancover*urbanaepe, rootd*urbanrootd, fieldcap, evapres, gtcond, soilcond, soilsat, soilstor, gtsat, gtstor)

    totalFlow = wood_flow + grass_flow + arable_flow + urban_flow

    return(totalFlow)

results = model(rain_df.rainfall_mm["1990"].values, pet_df.pet_mm["1990"].values, parameters...)

coreResult = model_core(rain_df.rainfall_mm["1990"].values, pet_df.pet_mm["1990"].values, 0.3, 0.4, 1, 0.5, 0.2, 200, 100, 200)
#plt.plot(coreResult)

results = model(rain_df.rainfall_mm["1990"].values, pet_df.pet_mm["1990"].values, 0.3, 0.4, 1, 0.5, 0.2, 200, 100, 200)
ValueError                                
Traceback (most recent call last)
<ipython-input-30-658bdb232e16> in <module>
     98 #plt.plot(coreResult)
     99 
--> 100 results = model(rain_df.rainfall_mm["1990"].values, pet_df.pet_mm["1990"].values, 0.05, 0.20, 0.35, 0.40, 0.95, 0.6, 0.4, 0.15, 1.7, 0.8, 0.5, 0.1, 0.3, 0.4, 1, 0.5, 0.2, 200, 100, 200)

<ipython-input-30-658bdb232e16> in model(rainfall, pet, woodcover, grasscover, arablecover, urbancover, woodaepe, grassaepe, arableaepe, urbanaepe, woodrootd, grassrootd, arablerootd, urbanrootd, fieldcap, evapres, rootd, gtcond, soilcond, soilsat, soilstor, gtstor)
     91     urban_flow = model_core(rainfall*urbancover, pet*urbancover*urbanaepe, rootd*urbanrootd, fieldcap, evapres, gtcond, soilcond, soilsat, soilstor, gtstor)
     92 
---> 93     totalFlow = wood_flow + grass_flow + arable_flow + urban_flow
     94 
     95     return(totalFlow)

ValueError: operands could not be broadcast together with shapes (730,) (1095,)

0 个答案:

没有答案