用2d权重和水平索引填充3d(“水平”)数组

时间:2018-08-08 06:02:20

标签: numpy

我的总体目标是通过使用水平地形将一堆3d(“水平”)气候数据文件转换为2d,方法是将它们“投影”到目标地形上。由于气候数据文件的级别相同,因此我正在构建一个投影矩阵,然后可以将其分别应用于每个文件。在这里,我正在构建此投影矩阵,它只不过是包含一些线性插值权重的3d权重矩阵:

wgt = np.ma.zeros((nlat,nlon,nlev))
print(wgt.shape)
> (2700, 1496, 11)

到目前为止,我已经能够得出必要的权重(wgt_Awgt_B-均为2d)和相应的级别索引(lev_idx-1lev_idx)使用np.digitize。剩下的步骤是使用这些权重和索引来构建3d权重矩阵。我有这个实现:

for ii in range(nlat):
   for jj in range(nlon):
      wgt[ii,jj,lev_idx[ii,jj]-1] = wgt_A[ii,jj]
      wgt[ii,jj,lev_idx[ii,jj]]   = wgt_B[ii,jj]

但是我想知道是否有更快,更Python化的方法。我看了np.putnp.place,但它们似乎并不是我真正需要的。

0 个答案:

没有答案