我试图从NetCDF文件绘制一周的时间序列数据,但遇到了一些问题。
我正在使用以下软件包:
import netCDF4
from matplotlib import pyplot as plt
import numpy as np
import xarray as xr
import dask
首先,我导入两个.nc文件:
^{pr2}$然后我使用xarray选择时间和网格位置:
dsloc1 = ds1.sel(time='2008-02-10',longitude=2.2,latitude=48.7,method='nearest')
dsloc2 = ds2.sel(time='2008-02-10',longitude=2.2,latitude=48.7,method='nearest')
然后我画出两个时间序列:
dsloc1['v100'].plot.line('b-',figsize=(15,10))
dsloc2['v100'].plot.line('y-')
产生了我所期待的:
但是,当我试图选择一系列的日期时,我得到一些错误。。。
dsloc1 = ds1.sel(time=slice('2008-03-01','2008-03-07'),longitude=2.2,latitude=48.7,method='nearest')
dsloc2 = ds2.sel(time=slice('2008-03-01','2008-03-07'),longitude=2.2,latitude=48.7,method='nearest')
我肯定这可能是个语法问题,但我花了太多的时间来解决它。。如有任何建议,不胜感激!
[编辑]回溯如下:
---------------------------------------------------------------------------
NotImplementedError Traceback (most recent call last)
<ipython-input-308-c3385fa732ab> in <module>()
1 # select time and grid location (Feb 10th, 2008, near Paris)
----> 2 dsloc1 = ds1.sel(time=slice('2008-03-01','2008-03-07'),longitude=2.2,latitude=48.7,method='nearest')
3 dsloc2 = ds2.sel(time=slice('2008-03-01','2008-03-07'),longitude=2.2,latitude=48.7,method='nearest')
/usr/local/lib/python3.6/site-packages/xarray/core/dataset.py in sel(self, indexers, method, tolerance, drop, **indexers_kwargs)
1507 indexers = either_dict_or_kwargs(indexers, indexers_kwargs, 'sel')
1508 pos_indexers, new_indexes = remap_label_indexers(
-> 1509 self, indexers=indexers, method=method, tolerance=tolerance)
1510 result = self.isel(indexers=pos_indexers, drop=drop)
1511 return result._replace_indexes(new_indexes)
/usr/local/lib/python3.6/site-packages/xarray/core/coordinates.py in remap_label_indexers(obj, indexers, method, tolerance, **indexers_kwargs)
353
354 pos_indexers, new_indexes = indexing.remap_label_indexers(
--> 355 obj, v_indexers, method=method, tolerance=tolerance
356 )
357 # attach indexer's coordinate to pos_indexers
/usr/local/lib/python3.6/site-packages/xarray/core/indexing.py in remap_label_indexers(data_obj, indexers, method, tolerance)
248 else:
249 idxr, new_idx = convert_label_indexer(index, label,
--> 250 dim, method, tolerance)
251 pos_indexers[dim] = idxr
252 if new_idx is not None:
/usr/local/lib/python3.6/site-packages/xarray/core/indexing.py in convert_label_indexer(index, label, index_name, method, tolerance)
132 if method is not None or tolerance is not None:
133 raise NotImplementedError(
--> 134 'cannot use ``method`` argument if any indexers are '
135 'slice objects')
136 indexer = index.slice_indexer(_sanitize_slice_element(label.start),
NotImplementedError: cannot use ``method`` argument if any indexers are slice objects
似乎不支持使用时间片与
method='nearest'
结合使用的sel
:这在某种程度上是有意义的,因为为一个切片选择
nearest
似乎有点奇怪。在您可以通过两个步骤执行
sel
来解决这个问题,即首先选择时间片,然后从该时间片中选择一个位置(或相反)。我不确定这是否是最好的解决办法,但至少它能起作用。在一些ERA5数据的快速示例:
结果如下:
^{pr2}$相关问题 更多 >
编程相关推荐