当前位置: 首页 > 知识库问答 >
问题:

是否可以序列化包含指向文件的惰性dask数组数据的xarray DataArray?

邢寒
2023-03-14

我已经从多个源hdf5文件构建了一个巨大的dask阵列。

假设数据仅来自一个hdf5文件:

import dask.array as da
import h5py
import xarray as xr

h5_data = h5py.File(path_to_file, "r")
dask_arr = da.from_array(h5_data, chunks=chunksize)

然后,我将dask数组中的(惰性)片段排列到一个xarray数据集中

xr_data = xr.DataArray(dask_arr[0:1000])
# Note: In reality, xr_data and dask[0:1000] aggregation is much more complex and needs quite long to process

现在我想序列化xr_data对象,所以我不需要每次都计算它。

xArray DataArray中的数据通过dask懒惰地映射到hdf5文件。我怎么连载(咸菜?Netcdf?...)能够在“懒惰映射”持续存在的情况下重新加载x数组对象?

谢谢你在外面!

共有1个答案

汪建白
2023-03-14

一般来说,你应该能够做到这一点。Dask和Xarray对象都是可拾取的。这将把图形序列化为字节,然后写入文件。

但是,在您的特定情况下,此图包含h5py。数据集对象,不幸的是,它们是不可序列化的。

xarrayopen_dataset方法以各种方式解决了这个问题。如果可以将它们与各种concat调用一起使用,那么我认为这可能是最好的选择,而不是直接使用h5py.Dataset对象。

 类似资料:
  • 我希望在Android中将一个对象数组从一个活动传递到另一个活动。我知道实现这一点的最佳方法是让传递的对象实现或,如这里所解释的。 但是,如果我传递这些对象的数组,考虑到您现在传递的是实现这些接口的对象数组,而不是对象本身,这是否仍然有效?如果不是,我是否需要扩展一个类,例如并实现这些接口,然后传递那个“数组”对象?

  • 我有一个包含几个pandas数据帧(由键标识)的dict,任何有效序列化(和干净加载)它的建议。下面是结构(一个pprint显示输出)。每个DICT['method_x_']['meas_x_']都是一个pandas数据帧。我们的目标是保存数据流,以便使用一些特定的绘图选项进行进一步的绘图。 {“Method1”: {“Meas1”: “方法2”: {“Meas1”: “Meas2”:

  • 给定一个场景,其中我有一个根文档和一个对象数组。是否可以返回包含一组对象的文档? 例如: 文件1 文件2 我需要一个查询,该查询将根据以下内容匹配并返回Doc1: 在数组中包含key1=value1的对象的文档 这可能吗?

  • 我正在为一个Delphi可执行文件开发一个C++的DLL项目。此可执行文件具有如下结构: 例如: 我试着做了这样的课程: 它给了我这个: 那不是我想要的。 我可以通过使用一个数组来实现我的目标: 但是,我被迫有一个固定的长度,这仍然不是我想要的。 我想了一个肮脏的解决办法: 但要解析、读取和写入它真的很难。 这样的问题有没有干净的解决方案? 顺便说一下,这不是一个XY问题

  • 问题内容: 我有一个网站,所有请求都通过(无提示)被无提示地重定向到,然后PHP用于显示正确的页面(通过解析)。 我想知道是否也可以将POST数据提交到假地址? 我目前有这样的表格… 我的规则是 我的支票工作正常。 但是,这似乎删除了应该发送给它的所有POST数据。 有没有办法保留帖子数据?我不想使用GET,因为它不能发送太多信息,尽管使用简单的查询表可能不会出现问题。 这是我重定向到的 问题答案

  • 本文向大家介绍JavaScript判断数组是否包含指定元素的方法,包括了JavaScript判断数组是否包含指定元素的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JavaScript判断数组是否包含指定元素的方法。分享给大家供大家参考。具体如下: 这段代码通过prototype定义了数组方法,这样就可以在任意数组调用contains方法 用法: 希望本文所述对大家的javascri