如何在Xarray中找到带偏移量的坐标?

时间:2017-08-03 15:47:16

标签: python-xarray

我有以下DataArray da_conc

<xarray.DataArray (z: 160, time: 745500)>
array([[  8.100153e-05,   9.084830e-05,   8.815896e-05, ...,   1.136741e-05,
      1.088270e-05,   1.127361e-05],
   [  1.448712e+01,   1.505478e+01,   1.504403e+01, ...,   5.473790e-01,
      5.625886e-01,   5.521512e-01],
   [           nan,            nan,            nan, ...,   1.515498e-02,
      1.276185e-02,   1.383076e-02],
   ..., 
   [           nan,            nan,            nan, ...,            nan,
               nan,            nan],
   [           nan,            nan,            nan, ...,            nan,
               nan,            nan],
   [           nan,            nan,            nan, ...,            nan,
               nan,            nan]], dtype=float32)
Coordinates:
  * z        (z) float64 0.01008 0.02016 0.03024 0.04031 0.05039 0.06047 ...
  * time     (time) datetime64[ns] 2014-09-16T07:00:00 2014-09-16T07:00:01...

我用where屏蔽了一些元素,如下所示:

da_conc.where( da_conc.round() == cut )

得到:

enter image description here

但实际上我需要知道z中不存在的值但是在z-25中,其中z包含之前找到的非空值的所有z坐标。换句话说,我想知道上面(操纵)图中离曲线25厘米的值。

我期待这样的事情发挥作用:

zcoord = da_conc.where( da_conc.round() == cut ).coords['z']
da_conc.sel( z = zcoord.round(2) == ( zcoord.round(2) - 25 ) )

欢迎任何帮助解决这个问题。 =)

已编辑#1:

我意识到这类似于shift,但我没有移动数据,而是想在新坐标处找到数据。

编辑#2:

@ocefpaf创造了这个要点以阐明问题:

isolines.ipynb

这是他的笔记本快照(谢谢@ocefpaf!):

z = np.linspace(0, 1.6, 160)
time = pd.date_range(start='2014-09-16T07:00:00', periods=745, freq='S')

data = np.random.rand(z.size, time.size) * 5

ds = xr.DataArray(data, coords=dict(z=z, time=time), dims=['z', 'time'])

z0 = np.random.rand(time.size)

z, time, data = np.broadcast_arrays(z[:, None], time[None, :], data)

z25 = z0+0.25

我想知道是否可以使用Xarray在z25坐标处找到数据。

0 个答案:

没有答案