首页 > 解决方案 > 我有一系列 sst 数据的 netcdf 文件。我想计算 sst 梯度来定位海洋前沿

问题描述

`sst_gradient = xr.Dataset({'sst_gradient':(['lat','lon','time'],sst_gradient)},/error in this line
                   coords={'lat':(selected_sst.lat.values),
                           'lon':(selected_sst.lon.values),
                           'time':(selected_sst.time.values)})
`

-------------------------------------------------- ------------------------- ValueError Traceback(最近一次调用最后)~/anaconda3/envs/myenv/lib/python3.6/site-packages /xarray/core/variable.py in as_variable(obj, name) 106 try: --> 107 obj = Variable(*obj) 108 except (TypeError, ValueError) as error:

~/anaconda3/envs/myenv/lib/python3.6/site-packages/xarray/core/variable.py in init (self, dims, data, attrs, encoding, fastpath) 308 self._data = as_compatible_data(data, fastpath =fastpath) --> 309 self._dims = self._parse_dimensions(dims) 310 self._attrs = None

~/anaconda3/envs/myenv/lib/python3.6/site-packages/xarray/core/variable.py in _parse_dimensions(self, dims) 499 "维度 %s 的长度必须与 " --> 500 " 相同数据维数,ndim=%s" % (dims, self.ndim) 501 )

ValueError: 维度 ('lat', 'lon', 'time') 的长度必须与数据维度的数量相同,ndim=0

在处理上述异常的过程中,又出现了一个异常:

3 coords={'lats':(selected_sst.lat.values), 4 'lons':(selected_sst.lon.values), ----> 5 'times':(selected_sst .time.values)}) 6 7

~/anaconda3/envs/myenv/lib/python3.6/site-packages/xarray/core/dataset.py in init (self, data_vars, coords, attrs, compat) 533 534 个变量, coord_names, dims, 索引 = merge_data_and_coords( --> 535 data_vars, coords, compat=compat 536) 537

~/anaconda3/envs/myenv/lib/python3.6/site-packages/xarray/core/merge.py 在 merge_data_and_coords(数据、坐标、compat、join)中 465 个索引 = dict(_extract_indexes_from_coords(coords)) 466 返回 merge_core( --> 467 个对象,compat,join,explicit_coords=explicit_coords,indexes=indexes 468 ) 469

~/anaconda3/envs/myenv/lib/python3.6/site-packages/xarray/core/merge.py 在 merge_core(对象,compat,join,priority_arg,explicit_coords,indexes,fill_value)550 强制,join=join,复制=False,indexes=indexes,fill_value=fill_value 551)-> 552 收集 = collect_variables_and_indexes(对齐) 553 554 优先 = _get_priority_vars_and_indexes(对齐,priority_arg,compat=compat)

~/anaconda3/envs/myenv/lib/python3.6/site-packages/xarray/core/merge.py in collect_variables_and_indexes(list_of_mappings) 275 append_all(coords, index) 276 --> 277 variable = as_variable(variable, name= name) 278 if variable.dims == (name,): 279 variable = variable.to_index_variable()

~/anaconda3/envs/myenv/lib/python3.6/site-packages/xarray/core/variable.py in as_variable(obj, name) 111 "无法转换形式为 " 112 "的元组 (dims, data [, attrs , encoding]): " --> 113 "{} to Variable.".format(obj) 114 ) 115 elif utils.is_scalar(obj):

ValueError: 无法转换形式的元组 (dims, data[, attrs, encoding]): (['lat', 'lon', 'time'], 维度:
(lat: 600, lon: 4320, sst.lat: 72, sst.lon: 600, sst.time: 4320, time: 72) 坐标:* lat (lat) float32 -40.041668 -40.12501 ... -89.87501 -89.958336 * lon (lon) float32 -179.95833 -179.875 ... 179.87502 179.95836 * time (time) datetime64[ns] 2005-01-15 2005-02-15 ... 2010-12-15 无坐标尺寸:sst.lat, sst.lon, sst.time 数据变量:sst_gradient (sst .lat, sst.lon, sst.time) float32 2.7785575e-08 ... nan) 到变量。

标签: pythonjupyter-notebookpython-xarray

解决方案


的等价函数numpy.gradientxarray.DataSet.differentiate

您可以在此处找到详细信息:xarray distinct


推荐阅读