首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将文件压缩为.h5

将文件压缩为.h5
EN

Stack Overflow用户
提问于 2019-10-31 12:31:05
回答 1查看 129关注 0票数 0

我有一个.h5文件,我从其中读取一些数据,我以某种方式对其进行排序,然后将其保存到另一个.h5文件中。下面是我的代码:

代码语言:javascript
运行
复制
import h5py
import numpy as np
import pandas as pd

f = pd.read_hdf("input_file.h5")

dt = f.values

dt2 = np.transpose(np.transpose(dt)[0:2100])
dt3 = np.transpose(np.transpose(dt)[-1])
dt3 = dt3.reshape(1,len(dt3))

d2 = len(dt2[0])
d1 = len(dt2)

dt2 = dt2.reshape((len(dt2), len(dt2[0])//3, 3))
ordered_index = np.flip(dt2[:,:,0].argsort(),1)

dt2 = dt2[np.arange(len(dt2[:,:,0].argsort()))[:,None],ordered_index].reshape((d1,d2))
dt2 = np.transpose(dt2)

data = np.transpose(np.concatenate((dt2,dt3),axis=0))

df=pd.DataFrame(data=data[0:,0:], index=[i for i in range(data.shape[0])], columns=[str(i) for i in range(data.shape[1])])


hf = h5py.File('ordered_pt_data.h5', 'w')
hf.create_dataset('dataset_ordered_pt', data=df)
hf.close()

程序运行良好,当我打印新数据(即print(df))时,一切看起来都很好(即数据按我想要的方式排序),排序后的数据具有与输入数据相同的维度。然而,输入文件"input_file.h5“有2.6 the,而我创建的文件有18 the。我做错了什么?我需要传递一些额外的参数来进一步压缩数据吗?同样,输出文件包含与输入文件完全相同的数据(包括大小和类型,除非我在没有意识到的情况下更改了数据的类型),只是顺序不同。谢谢!

EN

回答 1

Stack Overflow用户

发布于 2019-10-31 14:14:27

您可以通过查看数据类型是否相同来开始调试:

代码语言:javascript
运行
复制
# ...

print('f dtypes and memory usage')
print(f.info(memory_usage='deep'))


print('df dtypes and memory usage')
print(df.info(memory_usage='deep'))

检查内存使用情况:

代码语言:javascript
运行
复制
# ...
print('f memory usage')
print(f.memory_usage(deep=True)

print('df memory')
print(df.memory_usage(deep=True))

如果一切都是相同的,即相同的数据类型,相同的行数和列数。那么问题就是压缩。

根据文档,您可以按如下方式压缩数据

代码语言:javascript
运行
复制
with h5py.File('ordered_pt_data.h5', 'w') as hf:
    hf.create_dataset('dataset_ordered_pt', data=df, compression="gzip", compression_opts=9)

有关更多选项和详细信息,请参阅:doc

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58636948

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档