沿2D坐标将DataArray插值到固定的1D坐标

时间:2018-09-03 11:28:45

标签: python interpolation python-xarray

我在xarray中有一个2D DataArray(坐标时间和气压)和一个附加坐标(海拔高度取决于时间和气压),并且想将DataArray插值到固定的1D海拔坐标。

import xarray as xr
import numpy as np   

pressure = np.arange(150,120, -12)
time = np.arange(0,2)
altitude = [np.arange(13,16)+0.1*i for i in range(len(time))]

da = xr.DataArray(np.random.rand(len(time), len(pressure)), coords=[time, pressure], dims=['time', 'pressure'])
da.coords['altitude']= xr.DataArray(altitude, coords=[time, pressure], dims=['time', 'pressure'])

产量:

<xarray.DataArray (time: 2, pressure: 3)>
array([[0.985852, 0.698494, 0.109433],
       [0.741064, 0.465186, 0.255908]])
Coordinates:
  * time      (time) int32 0 1
  * pressure  (pressure) int32 150 138 126
    altitude  (time, pressure) float64 13.0 14.0 15.0 13.1 14.1 15.1

我想将其插值到固定的海拔高度值,例如

new_altitude = [13.2, 13.4, 13.6, 13.8, 14.0, 14.5]

屈服

<xarray.DataArray (time: 2, altitude: 6)>
array(interpolated data)
Coordinates:
  * time      (time) int32 0 1
  * new_altitude  (new_altitude) int32 13.2 13.4 13.6 13.8 14.0 14.5

我不能做

da_new_altitude = xr.DataArray(new_Altitude, dim='new_altitude')
da.interp(altitude=da_new_altitude)

因为2D海拔高度不是da中数据的维度,但我不能简单地使用

da.swap_dims({'pressure': 'altitude'})

因为高度是2D坐标,压力是1D。

有没有一种方法可以在xarray中执行此操作而无需手动迭代时间坐标?

0 个答案:

没有答案