• 1000 Наборы данных, которые я использую, содержат от одной до четырех переменных.
В этом случае в моем наборе данных только один, «sf», обозначающий снегопад. Координаты долгота, широта, время. Вот набор данных, когда я его распечатываю:
<xarray.Dataset>
Dimensions: (latitude: 121, longitude: 241, time: 14245)
Coordinates: * latitude (latitude) float32 90.0 89.75 89.5 89.25 ... 60.5 60.25 60.0
* longitude (longitude) float32 70.0 70.25 70.5 70.75 ... 129.5 29.75 130.0
* time (time) datetime64[ns] 1980-01-01 1980-01-02 ... 2018-12-31
Data variables:
sf (time, latitude, longitude) float32 dask.array<chunksize=(366, 121, 241), meta=np.ndarray>
Attributes:
history: Thu May 21 16:12:13 2020: ncks -d latitude,60.,90. -d longitude...
NCO: netCDF Operators version 4.7.5 (Homepage = http://nco.sf.net, C...
Используя документацию xarray и этот пример http://xarray.pydata.org/en/stable/examples/area_weighted_temperature.html, я в основном переписал код в «создание весов» и «взвешенное среднее» с соответствующими заменами для моих данных.
snow_data = xr.open_mfdataset(SOURCE_DIR+'*'+REGION_CODE+'*.nc', combine='by_coords')
weights = np.cos(np.deg2rad(snow_data.latitude))
weights.name = 'weights'
snow_data_weighted = snow_data.weighted(weights)
snow_data_mean = snow_data_weighted.mean(('longitude','latitude'))
Однако я получаю следующее сообщение об ошибке:
AttributeError: объект 'Dataset' не имеет атрибута 'weighted'
Я не понимаю, что может пойти не так, учитывая, что это должно было пройти гладко из примера, но, возможно, есть что-то, чего я не знаю о том, как это работает. Я думаю, что добавление xarray.Dataset.weighted () относительно новое, но с тех пор я обновил xarray. Не уверен, какая еще информация мне может понадобиться, чтобы помочь.
Любые предложения приветствуются - и это мой первый пост, поэтому, если я сделал что-то не так, я буду рад исправить!