【问题标题】:I have a series of netcdf files of sst data. I want to compute sst gradient to locate the oceanic front我有一系列 sst 数据的 netcdf 文件。我想计算 sst 梯度来定位海洋前沿
【发布时间】:2020-04-30 03:05:06
【问题描述】:
`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 在 as_variable(obj, 名称) 106 尝试: --> 107 obj = 变量(*obj) 108 除外 (TypeError, ValueError) 为错误:

~/anaconda3/envs/myenv/lib/python3.6/site-packages/xarray/core/variable.py 在 init(自我、暗淡、数据、属性、编码、快速路径) 308 self._data = as_compatible_data(数据,快速路径=快速路径) --> 309 self._dims = self._parse_dimensions(dims) 310 self._attrs = 无

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

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

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

ValueError Traceback(最近调用 最后)在 3 coords={'lats':(selected_sst.lat.values), 4 'lons':(selected_sst.lon.values), ----> 5 '次':(selected_sst.time.values)}) 6 7

~/anaconda3/envs/myenv/lib/python3.6/site-packages/xarray/core/dataset.py 在 init(self, data_vars, coords, attrs, compat) 533 534 个变量,coord_names,dims,indexs = merge_data_and_coords( --> 535 数据变量,坐标,compat=compat 第536章) 第537章

~/anaconda3/envs/myenv/lib/python3.6/site-packages/xarray/core/merge.py 在 merge_data_and_coords(数据,坐标,兼容,加入) 465 个索引 = dict(_extract_indexes_from_coords(coords)) 第466章 --> 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, 索引,填充值) 550 强制,join=join,copy=False,indexes=indexes,fill_value=fill_value 第551章) --> 552 收集 = collect_variables_and_indexes(对齐) 553 554 优先级 = _get_priority_vars_and_indexes(aligned, priority_arg, compat=compat)

~/anaconda3/envs/myenv/lib/python3.6/site-packages/xarray/core/merge.py 在 collect_variables_and_indexes(list_of_mappings) 第275章 276 --> 277 变量 = as_variable(变量,名称=名称) 278如果variable.dims ==(名称,): 279 变量 = variable.to_index_variable()

~/anaconda3/envs/myenv/lib/python3.6/site-packages/xarray/core/variable.py 在 as_variable(obj, 名称) 111“无法转换形式的元组” 112“(暗淡,数据[,属性,编码]):” --> 113 "{} 到变量。".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) 到变量。

【问题讨论】:

  • 您需要添加一些有关源数据的信息(形状、尺寸等),否则我们应该如何知道您为什么会遇到这些问题。对于 xarray.Datasets ds.info() 的输出会很好,所以sst_selected.info() 的输出会很有趣,还有关于 sst_gradient 的信息。
  • 选择的sst被视为纬度低于40度,形状为(72, 600, 4320)。 sst_gradient 使用 np.gradient::sst_gradient= np.gradient(selected_sst.values,float(dy)*1e3,edge_order=2, axis=1) 计算。它的长度为 (72)。

标签: python jupyter-notebook python-xarray


【解决方案1】:

numpy.gradient 的等效函数是 xarray.DataSet.differentiate

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

【讨论】:

  • 我尝试使用,但它不起作用。它再次显示相同的错误。
猜你喜欢
  • 2014-11-15
  • 2017-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-18
  • 1970-01-01
  • 2022-01-12
  • 1970-01-01
相关资源
最近更新 更多