我有一个3维数组,尺寸为time
,lon
和lev
,并定义了坐标数组。
数据在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仍然很令人困惑。
有人可以给我一些指示吗?
谢谢