Bilerping 2D python数组会产生比预期更多的值。有谁能解释一下?

时间:2015-03-04 03:36:20

标签: python arrays numpy netcdf

当我运行下面的代码时,我得到了 (24,170,180) (29559)

作为我的打印语句的答案(打印数组的形状)。 我使用的原始数据集的形状是(24,170,180)。因此,当前数据集dataArr的尺寸为170 * 180。我修复了时间t = 10(这里有维度24)我迭代2d数组并且bilerp一个单元格(四个数据点-i,j i + 1,j,i,j + 1,i + 1,j + 1 )转换为一个值并附加到self.tempY数组。因此,self.tempY数组形状的值应为170 * 180。但结果集的值为29904。为什么我得到这个价值?

def compute(self,varval):      
    vars=self.data.variables
    for var in vars:
        if var==varval:
            ntimes, ny, nx=vars[var].shape #inherit the method above.
    print(ntimes, ny, nx)
    #create the old computational grid.
    computational_grid=np.zeros((ny,nx),dtype=int) 
    fraction=.5 
    newnx,newny =(nx*fraction,ny*fraction)
    new_computational_grid=np.zeros((newny,newnx),dtype=int)
    phy_value_arr=self.get_data(varval)
    t=10 #send this t value with coords
    dataArr=self.data.variables['tos'][t]     
    for j in range(1,(nx-2),1):
        for i in range(1,(ny-2),1):
           a=self.Lerp((dataArr[i][j+1]),(dataArr[i+1][j+1]),fraction)
           b=self.Lerp((dataArr[i][j]),(dataArr[i+1][j]),fraction)
           self.tempY.append(self.Lerp(a,b,fraction))
    smallgridarray = np.asarray(self.tempY)
    print(smallgridarray.shape)
def Lerp(self, _a, _b, _t) :
  return _a+(_b-_a)*_t    

1 个答案:

答案 0 :(得分:0)

好的,我弄明白了为什么!它是从nx-2 * ny-2得到的正确的点数 即:168 * 178