python - 我有一系列 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) 到变量。
解决方案
的等价函数numpy.gradient
是xarray.DataSet.differentiate
。
您可以在此处找到详细信息:xarray distinct
推荐阅读
- java - 如何在此代码中打印出方法“中心”的值 - Java
- linux - 防止在 ssh 命令中扩展/评估参数
- java - 使用专有 MySQL DB 对 Java 应用程序进行 Dockerizing
- python - Python 函数看不到导入的模块
- ios - swift firestore tinder - 获取用户并添加到数组以加载到屏幕上 - 高级
- javascript - Javascript“mousemove”事件有时不会触发
- javascript - hasOwnProperty 未捕获的类型错误
- c# - 如何使用Task异步加载Winforms中的数据
- java - 日志输出中的奇怪符号
- docker - Puppet 没有显示 docker 正在运行的服务器