Настройка
предположим, у меня есть файл NetCDF, в котором хранится несколько растров, проиндексированных date
, longitudes
и latitudes
, загруженных в память с XArray
с именем "stack":
<xarray.Dataset>
Dimensions: (date: 1, lat: 2000, lon: 7200)
Coordinates:
* date (date) datetime64[ns] 2000-01-01
* lat (lat) float64 49.97 49.92 49.87 49.82 ... -49.88 -49.93 -49.98
* lon (lon) float64 -180.0 -179.9 -179.9 -179.8 ... 179.9 179.9 180.0
Data variables:
rainfall (date, lat, lon) float64 ...
Задача
чтобы добавить новый date
в стек.
способ
Мой подход заключается в создании Dataset
"нового" из растра с теми же индексами, что и у загруженного NetCDF:
xr.DataArray(
<some numpy data>,
dims=['date', 'lat', 'lon'],
coords={
'date': [<some datetime64>],
'lat': <same list of latitudes>,
'lon': <same list of longitudes>
},
name='rainfall'
).to_dataset()
и затем объединить:
merged = xr.concat([stack, new], dim='date')
Это работает, но не очень элегантно и, будучи новичком в XArray, может быть, есть лучший способ сделать это, например, просто с помощью некоторых подпрограмм индексирования, например, добавить новые date
и данные; что-то вроде:
stack[<new_date>] = <some numpy data>