DataArray.mean
не сохраняет координату, которая зависит от размера, к которому применяется среднее значение.
ПРИМЕЧАНИЕ: XLAT и XLONG не зависят от времени;однако некоторые файлы netcdf имеют координату времени вдоль этих двух.
У меня есть этот файл netcdf wrfout_d03.nc, в котором я открываю файл с помощью:
ds = xr.open_dataset('/Users/jacob/Desktop/wrfpy/wrfout_d03_may.nc')
Thisзатем дает объект DataSet:
<xarray.Dataset>
Dimensions: (Time: 193, bio_emissions_dimension_stag: 41, bottom_top: 50, bottom_top_stag: 51, klevs_for_dvel: 1, seed_dim_stag: 12, soil_layers_stag: 4, south_north: 115, south_north_stag: 116, west_east: 115, west_east_stag: 116)
Coordinates:
XLAT (Time, south_north, west_east) float32 ...
XLONG (Time, south_north, west_east) float32 ...
XTIME (Time) datetime64[ns] ...
XLAT_U (Time, south_north, west_east_stag) float32 ...
XLONG_U (Time, south_north, west_east_stag) float32 ...
XLAT_V (Time, south_north_stag, west_east) float32 ...
XLONG_V (Time, south_north_stag, west_east) float32 ...
Dimensions without coordinates: Time, bio_emissions_dimension_stag, bottom_top, bottom_top_stag, klevs_for_dvel, seed_dim_stag, soil_layers_stag, south_north, south_north_stag, west_east, west_east_stag
Data variables:
datavars...
Затем я получаю доступ к переменной PM2_5_DRY со следующим кодом:
pm25 = ds.PM2_5_DRY
Полученный объект pm25 имеет следующие размеры и координаты:
<xarray.DataArray 'PM2_5_DRY' (Time: 193, bottom_top: 50, south_north: 115, west_east: 115)>
[127621250 values with dtype=float32]
Coordinates:
XLAT (Time, south_north, west_east) float32 ...
XLONG (Time, south_north, west_east) float32 ...
XTIME (Time) datetime64[ns] ...
Dimensions without coordinates: Time, bottom_top, south_north, west_east
Attributes:
FieldType: 104
MemoryOrder: XYZ
description: pm2.5 aerosol dry mass
units: ug m^-3
stagger:
Затем я манипулирую объектом pm25 и получаю среднее значение в измерении time через:
pm25_mean = pm25.mean(dim='Time', keep_attrs = True)
Полученный объект является массивом данных, но без координат XLAT или XLON.
<xarray.DataArray 'PM2_5_DRY' (bottom_top: 50, south_north: 115, west_east: 115)>
array([[[14.73083 , 14.756626 , 14.796355 , ..., 20.325712 ,
20.855696 , 21.381271 ],
[14.651459 , 14.34477 , 14.371858 , ..., 18.00389 ,
18.4109 , 21.337002 ],
[14.59026 , 14.257076 , 14.293012 , ..., 17.391146 ,
18.217058 , 20.882664 ],
...,
[27.356459 , 27.21468 , 27.757051 , ..., 8.084272 ,
8.010168 , 7.989942 ],
[27.185486 , 27.02623 , 27.776043 , ..., 7.944748 ,
7.8795266 , 7.8552976 ],
[26.926008 , 27.724253 , 28.427626 , ..., 7.8269224 ,
7.773637 , 7.741844 ]],
Dimensions without coordinates: bottom_top, south_north, west_east
Attributes:
FieldType: 104
MemoryOrder: XYZ
description: pm2.5 aerosol dry mass
units: ug m^-3
stagger:
Следующий код для проверки дает:
pm25_mean.coords
Coordinates:
*empty*
Я попытался посмотреть надокументация для средней функции в xarray;однако я не смог найти никакой опции, чтобы скопировать координаты из предыдущего объекта в новый.
Какие-нибудь советы, как это сделать? Я думаю, что мне нужно получить доступ к этим координатам из файла, а затем объединить их снова. Но я не уверен, как пройти через этот процесс.
Кроме того, это как-то связано с этим?
XLAT (Time, south_north, west_east) float32
XLAT - это многомерная координата, которая также зависит от времени. Поскольку я получил среднее значение в измерении Time, число измерений pm25 было уменьшено до 3 вместо 4. Может ли это как-то повлиять и на координаты?
Мне нужен конечный объект, чтобы иметь координаты XLAT иXLONG, так как я буду визуализировать это.
Спасибо за любую помощь!