我在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中执行此操作而无需手动迭代时间坐标?