【问题标题】:Bilerping a 2D python array results in more values than expected. Can anyone explain this?Bilerping 2D python 数组会产生比预期更多的值。谁能解释一下?
【发布时间】:2015-05-04 22:58:39
【问题描述】:

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

作为我的打印语句的答案(打印数组的形状)。 我使用的原始数据集的形状是 (24, 170, 180)。所以当前数据集 dataArr 的尺寸为 170*180。我固定了时间 t=10(这里的维度为 24)我遍历 2d 数组并 bilrp 一个单元格(四个数据点 - 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    

【问题讨论】:

  • 你能提供一些输入数据的例子吗?我们如何调用这个方法来自己检查结果?给定输入的预期输出是什么?
  • 我有一个在此方法中使用的 netcdf 数据集。它有几个变量,其中 tos 是我关心的变量。 self.get_data(varval) 是一个包含时间经度和纬度的 3d 数组。我从 t=10 的 3d 数组中得到一个切片,并尝试获取该 2d 平面中单元格的平均值。这个平面的形状是 170*180,有那么多点。我正在尝试对这个平面上的每个单元格进行 birp 并生成值数组。这有帮助吗?
  • 我打印了 nx 值和 ny 值,它们是 180 和 170。如果我打印 dataArr,我会得到类似的结果。我想知道空白值是否也有任何问题。
  • [[-- -- -- ..., -- -- --] [-- -- -- ..., -- -- --] [-- -- - ...... - - - ] ...,271.42236328125 271.422607421875 271.4228820800781 ...,271.4221496582031 271.4220886230469 271.4221496582031] [271.432373046875 271.43243408203125 271.4325256347656 ...,271.4322204589844 271.4322814941406 271.4323425292969] [271.4455261230469 271.4455261230469 271.4455261230469 ...,271.445556640625 271.445556640625 271.445556640625]]

标签: python arrays numpy netcdf


【解决方案1】:

好吧,我知道为什么了!这是我从 nx-2 *ny-2 得到的正确分数 即:168*178

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-07
    • 2015-12-21
    • 1970-01-01
    • 2022-07-21
    • 1970-01-01
    • 2015-11-23
    • 2013-05-23
    相关资源
    最近更新 更多