Python xarray.DataArray:调整大小坐标

时间:2017-05-01 14:43:35

标签: python python-xarray

对于我的Python包numericalmodel,我认为它有助于简单数值模型的原型设计,我为自描述数据集编写了类。我最近偶然发现了令人敬畏的xarray library,我正在考虑使用xarray.Datasetxarray.DataArray而不是我自己的类进行数据管理。

我搜索了xarray documentation,但没有找到我的问题的答案。对不起,如果我忽略了什么。

据我了解xarray,其结构最适用于不会改变其形状的静态数据。但是对于我的numericalmodel包,我需要不断地使用新的及时值来扩展数组,即在每个新的时间步骤。我事先并不知道时间点,因为时间步长可以自适应地确定每个解决的方程。

所以我的问题:

如何展开 xarray.DataArray的坐标?

这可以归结为“如何扩展xarray.DataArray”一般

这样做的可能方法应该是:

  • 没有太多开销(例如,不依赖于创建新的DataArray,然后重新分配坐标,然后删除旧坐标
  • 可能处理依赖于该坐标的其他数据变量

我的猜测是,它不可能就是这样。通常情况下,如果您在某个问题上找不到任何内容,或者意味着答案显而易见,或者它非常重要; - )

谢谢!

nobodyinperson

1 个答案:

答案 0 :(得分:0)

简短的回答是,使用xarray的当前数据模型(基于numpy数组)无法有效地实现这一点。 Xarray不支持追加,因为numpy中的追加需要一个完整的副本。

有关详细信息,请参阅最近的邮件列表讨论,但基本上目前推荐的方法是将结果累积到列表中,并且最后只调用concat一次:https://groups.google.com/forum/m/#!topic/xarray/BAN7WobAfyw

也就是说,如果我们构建一个替代numpy数组的替代存储层,有一些方法可以有效地完成(沿着一个维度在分摊的常量时间内附加)。 Xarray实际上已经有一些,所以这并不像看起来那么难。无论如何,如果您对此可能有兴趣,我很乐意讨论GitHub问题中的后续步骤。