【问题标题】:Apply function on coordinate pair along particular axis using multiple variables in Xarray使用 Xarray 中的多个变量沿特定轴在坐标对上应用函数
【发布时间】:2017-09-13 17:39:23
【问题描述】:

我的 xarray Dataset 有三个维度,

  • x,y,t

和 2 个变量,

  • foo, bar

我想在每个xy 坐标对的时间序列t 上应用函数baz()

baz() 将接受foo-s 数组和bar-s 数组(x, y

我很难理解在 xarray、pandas、numpy 或 dask 中是否存在用于处理/分发此问题的内置结构。

有什么提示吗?

我目前的做法是写一个python数组迭代器,或者探索ufunc:

  • 在 python 中迭代某些东西的问题是我必须自己处理并发,并且迭代中有开销。

  • ufunc 的问题在于我对它的理解不够,它似乎是一个应用于数组的单个元素的函数,而不是沿轴的子集。

我充满希望的部分是寻找 xarray 原生或 daskable 的东西。

【问题讨论】:

  • 一个真实世界的例子会有很大帮助。
  • 与我实际需要这个无关,我想出了一个虚拟示例。假设我以 1 年的分辨率对跨越 30 年的人口数据进行了网格化。对于 X 乘 Y 的区域。对于每个 (x,y) 元素 XY,我想对该特定坐标的 30 个时间戳值运行线性回归。结果是一个存储每个回归斜率的网格。这将代表该给定区域的过滤线性人口增长,并突出显示高人口增长而不仅仅是高人口。
  • 就我而言。这是高维时间序列统计。因此需要多个变量。

标签: python-3.x numpy dask python-xarray


【解决方案1】:

听起来(模糊地)你在寻找Dataset.reduce

ds.reduce(baz, dim=('x', 'y'))

【讨论】:

  • 这是一个有趣的想法。我会玩弄它的。我可以更具体(如果您认为我的问题措辞含糊)
  • MCVE 会有所帮助。以及您想要的输出的明确定义。 :-)
猜你喜欢
  • 1970-01-01
  • 2019-07-07
  • 2020-06-08
  • 2017-03-25
  • 1970-01-01
  • 1970-01-01
  • 2019-01-17
  • 2020-10-08
  • 2021-12-12
相关资源
最近更新 更多