问题标签 [hdf]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
21618 浏览

r - 将 hdf 文件读入 R 并将它们转换为 geoTIFF 栅格

我正在尝试将 MODIS 17 数据文件读入 R,对其进行操作(裁剪等),然后将它们保存为 geoTIFF。数据文件采用.hdf格式,似乎没有一种简单的方法可以将它们读入 R。

与其他主题相比,那里没有很多建议,而且大部分都是几年前的。其中一些还建议使用其他程序,但我想坚持只使用 R。

人们使用什么包来处理.hdfR 中的文件?

0 投票
1 回答
215 浏览

python-3.x - Pandas HDF 限制 CSV 文件的行数

我有一个 3GB 的 CSV 文件。我正在尝试使用 Pandas 将其保存为 HDF 格式,以便更快地加载它。

原始的 CSV 文件大约有 300 万行,这从这段代码的输出中可以看出。最后一行输出是:Saving 167 chunk...Done!这意味着:167*20000 = 3.340.000 行

我的问题是:

=> 4613 行

和:

什么都不返回,即使我确定“项目”列在原始文件中的条目等于 1。

有什么问题?

0 投票
2 回答
163 浏览

python - 在 python 中存储和使用两个对象之间的信息的最佳方法是什么?

我有一组对象的名称/标识(就生活中的对象而言,而不是 python 对象)。

为简单起见,这些对象具有以下名称:

此类物体的数量约为 2000 个(未来可能约为 6000 个)。

我正在尝试确定完成任务的最佳方式:在每对对象之间存储信息 (param1, param2, ..., paramN) 的最佳方式是什么。看起来像下面的数据结构:

重要的是要考虑几个方面:

  • cell[A,B]=cell[B,A] 所以我们只需要存储所有表格的 1/2
  • 我需要将此表保存在 tmp 目录中并在我的 python 应用程序的启动中加载
  • 我需要在我的 python 应用程序中快速从这个表中提取值

我的解决方案:我使用了 pandas.DataFrame 模块。对于每个参数:param1,param2,...我制作单独的三角表:param1table,param2table,...填充后我将它们保存在 CSV 文件中:param1table.csv,param2table.csv,...csv

在我的程序中,如果我需要成对的param1:A,B,我需要加载param1table.csv(pandas.read_csv)并查看值[A,B]是否存在返回它,否则返回[B,A]

我认为它不是有效的方法。

0 投票
0 回答
468 浏览

pandas - 优化向 hdf 发送数据帧?

h5和hdf文件有什么区别?我应该使用其中一个吗?我尝试使用以下两个代码执行 timeit,每个循环大约需要 3 分 29 秒,文件大小为 240mb。我最终在第二个代码上遇到了错误,但磁盘上的文件大小超过了 300mb。

另外,我收到一条错误消息,上面写着:

这是由于字符串列由于空白值而成为对象。如果我使用 .astype(str),则所有空格都将替换为 nan(甚至出现在输出文件中的字符串)。我是否担心错误消息并填写空白并稍后用 np.nan 再次替换它们,或者只是忽略它?

这是 df.info() 显示有一些列有空值。我无法删除这些行,但如果需要,我可以暂时用一些东西填充它们。

0 投票
1 回答
642 浏览

python - 使用 Basemap 包绘制 OMI 卫星每日数据

OMI(臭氧监测仪)测量二氧化氮(NO2)、臭氧(O3)等关键空气质量成分。我在这里下载的每日columnO3文件代表了对流层臭氧柱浓度的全球分布。

该文件的大小约为 90Mb。任何有兴趣的人都可以下载其中任何一个。

数据以 (15, 720, 1440) 的形式上传到这里

  • 15 是候选场景的数量
  • 1440 是 X 维度,经度 [-180:180] 从左到右
  • 720 是 Y 维度,纬度 [-90:90] 从下到上

使用 h5py和matplotlib.basemap,这是我的尝试:

如图所示:

在此处输入图像描述

使用Panoply,候选为 0,如图所示:

在此处输入图像描述

我的问题

  • 如何设置候选场景代表每日的全球分布(候选场景是什么意思?是否对应轨道轨迹?)

  • 我的代码有什么问题,没有显示正确的数字

我的目标

下图截自网络。这就是我的目标风格!

任何建议或教程指南将不胜感激!

在此处输入图像描述

0 投票
1 回答
200 浏览

python - 在 HDF5 C++ api 中使用 GZIP 压缩时是否默认启用自动分块?

我正在使用 C++ HDF api 编写一个 HDF5 文件,并与 H5py Python 库进行一些比较。

在 H5py Python 库,当使用 GZIP 或 LZF 等压缩算法时,默认应用自动分块。

相同的条件是否适用于 HDF5 C++ api?如果是这样,我如何证明在将压缩算法(例如 GZIP)应用于数据集时自动创建了块。

0 投票
2 回答
3859 浏览

python - 如何在 python 中合并两个或三个 3D 数组?

我有 hdf 格式的时间序列数据。我使用下面的代码从 hdf 文件中读取数据。现在,我尝试根据经纬度加入具有相同 jdn(儒略日数)的数据。具有相同儒略日数的数据代表连续的空间数据

我的数据附在此链接中:https ://drive.google.com/folderview?id=0B2rkXkOkG7ExX2lTTWEySU1fOWc&usp=sharing

0 投票
1 回答
1053 浏览

c++ - 使用 HDF5 库重命名和删除 HDF5 文件中的组

我正在使用 HDFview 应用程序来修改 HDF5 数据文件。基本上我所做的是检查所有组,删除与特定属性值匹配的组,重命名一些组并调整属性值以使文件与应用程序一致。

问题是我想做同样的事情,但使用 C++ HDF5 库。我已经完成了一个对组进行迭代的小型应用程序,但问题是我怎样才能删除它们?似乎规范不允许这种操作。我也尝试取消链接该组,但通话失败。对于重命名部分,我尝试移动组,就像在 unix 提示符中一样,但这不起作用。

另外需要注意的是,如果规范不允许删除,HDFview 如何支持该操作?

对此的任何提示都非常感谢。问候

0 投票
2 回答
87 浏览

pandas - Pandas:同一个 HDF 中的大型数据帧?

我有几个不同的相关数据框(如果需要,有 id 可以加入它们)。但是,我并不总是同时需要它们。

由于它们很大,将它们存储在单独的 HDF 存储中是否有意义?或者当我在同一个文件中处理其他帧时,携带“未使用”帧的成本可以忽略不计?

0 投票
0 回答
1059 浏览

python - 加载大型稀疏矩阵的最快方法

我一直在尝试寻找在 Python 中访问大型数据集的最快方法。

在我的真实案例中,我有一个大约 10,000 x 10,000 的 csv 文件,我将其加载到 pandas MultiIndex DataFrame 中,因为我主要采用点积并对级别求和。

由于将此 csv 加载到 pandas 大约需要一分钟,我一直在寻找提高速度的方法。

经过调查,我遇到了这个线程:为什么在 python 中保存/加载数据比 matlab 占用更多的空间/时间?

我从这个线程得到的是 .mat 文件加载速度更快,因为它们存储为 hdf5。因此,我想通过 h5py、pandas 和 scypio(从 .mat 文件加载数据)来评估 pickle 和 hdf 的性能。

我的真实世界案例的结果如下:

可以看出,加载 .mat 文件确实比通过 Python 生成的 pickle 和 hdfs 快 3 倍以上。因此,.mat 文件的更快加载时间似乎不是由于 hdf,因为加载通过 python 生成的 hdfs 没有这个优势。

基于此,我想在这里发布一个问题,询问将大型数据集加载到 python 中最快的方法是什么。为此,我用一些随机数据制作了一个玩具示例:

在 MATLAB 中将 csv 转换为 mat 后,我​​进行了以下测试来评估加载时间:

结果如下:

有趣的是,.mat 文件似乎在这里失去了加载优势。经过调查,事实证明现实世界的数据非常稀疏。为了弄清楚有多稀疏,我将所有非零值替换为 1,将所有值相加并除以矩阵的大小。这产生了约0.28的密度。使用这个数字,我将玩具示例中的随机矩阵替换为稀疏矩阵:

确实,这似乎起到了作用:

因此,我想研究保存为稀疏是否可以加快 pickle、pandas 和 h5py 的加载时间。为此,我将稀疏版本直接保存到pickle,并保存了DataFrame的稀疏版本:

尝试通过 h5py 保存时出现错误:

经过一番调查,似乎我应该尝试使用分块存储,但我觉得通过进一步调查,我正在远离最初的目标。

结果如下:

虽然 pickle 似乎确实加快了速度(但仍然没有 .mat 快),但 pandas 受到了巨大的打击,加载需要将近 8 分钟。

最后我尝试直接从python保存到mat:

加载这个产生:

并保存稀疏版本:

产量

虽然速度更快,但它仍然比 MATLAB 的 mat 文件慢了将近 10 秒。

因此,我想知道从这里去哪里。有什么方法可以达到(或超越)MATLAB mat 文件的性能?如果可能的话,我想留在同一个环境中(即python、spyder)。