интерполировать DataArray вдоль 2D-координаты в фиксированную 1D-координату - PullRequest
0 голосов
/ 03 сентября 2018

У меня есть 2D DataArray в xarray (координаты времени и давления воздуха) и дополнительная координата (высота, которая зависит от времени и давления воздуха), и я хочу интерполировать 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 без ручной итерации по временной координате?

...