基于一个包含纬度和经度坐标以及几个变量的xarray数据集,我想创建一个包含基于纬度和经度坐标的对象的新变量。
例如,从以下数据集中:
<xarray.Dataset>
Dimensions: (time: 100, x: 1000, y: 840)
Coordinates:
* x (x) float64 2.452e+06 2.458e+06 2.462e+06 ... 7.442e+06 7.448e+06
* y (y) float64 1.352e+06 1.358e+06 1.362e+06 ... 5.542e+06 5.548e+06
* time (time) datetime64[ns] 2015-01-01 ... 2015-01-05T03:00:00
...我想根据各自的纬度和经度坐标为每个网格单元简单地创建一个点对象。
伪代码:
ds['points'] = (('y', 'x'), point_creation_function(ds.y, ds.x))
(如何)我可以应用一个需要坐标值作为输入的函数,以便可以将结果直接添加为新变量吗?
初始化ds.points后的可怕实现是:
for x_value in ds.x:
for y_value in ds.y:
ds.points.loc[dict(x=x_value, y=y_value)] = (x_value, y_value)
我假设有一个精巧且计算效率高的解决方案,但是搜索我不了解如何使用apply,reduce或其他功能来实现它的文档。