插补坐标数组

时间:2019-02-07 05:09:48

标签: python python-3.x python-xarray

我有一个3维数组,尺寸为timelonlev,并定义了坐标数组。

数据在lev中具有严格减小的值。

以下是有关如何创建此类DataArray的示例:

import numpy as np
import xarray as xr
import datetime

ntime = 31
nlon = 180
nlev = 51

A = np.zeros([ntime, nlon, nlev])
A[:,:,0] = np.random.uniform(low=5, high=30, size=[ntime, nlon])

for i in range(1, nlev):
    A[:,:,i] = A[:,:,i-1] * np.random.uniform(size=[ntime, nlon])

base = datetime.datetime(2019, 2, 3)
times = np.array([base + datetime.timedelta(days=i) for i in range(ntime)])

B = xr.DataArray(A, dims=('time', 'lon', 'lev'), 
                 coords={'time':times, 
                         'lon':np.linspace(0, 360, nlon, endpoint=False), 
                         'lev':np.linspace(0, 100, nlev)})

我想要的是一个二维数组,该数组的值达到某个值(例如0.2)。

我可以做这样的事情:

B.lev[B.where(B>=0.2).argmin(dim='lev')]

但是如果我想对值进行插值怎么办?我怀疑我将不得不编写自己的函数来对值进行插值并返回级别,然后以某种方式将其推入对reduce的调用中,但是我发现documentation仍然很令人困惑。

有人可以给我一些指示吗?

谢谢

0 个答案:

没有答案