gpt4 book ai didi

python - 使用 h5py 写入文件的最快方法

转载 作者:太空宇宙 更新时间:2023-11-03 18:19:17 31 4
gpt4 key购买 nike

首先,我阅读了主题“Fastest way to write hdf5 file with Python?”,但没有多大帮助。

我正在尝试加载一个 h5f5 结构中大约 1GB 的文件(大小为 (70133351,1) 的矩阵)。

代码很简单,但是速度很慢。

import h5py
f = h5py.File("8.hdf5", "w")
dset = f.create_dataset("8", (70133351,1))

myfile=open("8.txt")

for line in myfile:
line=line.split("\t")
dset[line[1]]=line[0]

myfile.close()
f.close()

我有一个50MB的较小版本的矩阵,我尝试了相同的代码,24小时后还没有完成。

我知道让它更快的方法是避免“for循环”。如果我使用常规 python,我会使用哈希理解。然而,看起来它不适合这里。

我可以稍后通过以下方式查询该文件:

f = h5py.File("8.hdf5")
h=f['8']
print 'GFXVG' in h.attrs

考虑到 GFXVG 是 h 中的键,这会回答我“正确”

有人有什么想法吗?

文件部分示例:

508 LREGASKW
592 SVFKINKS
1151 LGHWTVSP
131 EAGQIISE
198 ELDDSARE
344 SQAVAVAN
336 ELDDSARF
592 SVFKINKL
638 SVFKINKI
107 PRTGAGQH
107 PRTGAAAA

谢谢

最佳答案

您可以使用 loadtext 将所有数据加载到 numpy 数组 中,并使用它来实例化您的 hdf5 数据集。

import h5py
import numpy as np

d = np.loadtxt('data.txt', dtype='|S18')

返回

array([['508.fna', 'LREGASKW'],
['592.fna', 'SVFKINKS'],
['1151.fna', 'LGHWTVSP'],
['131.fna', 'EAGQIISE'],
['198.fna', 'ELDDSARE'],
['344.fna', 'SQAVAVAN'],
['336.fna', 'ELDDSARF'],
['592.fna', 'SVFKINKL'],
['638.fna', 'SVFKINKI'],
['107.fna', 'PRTGAGQH'],
['1197.fna', 'ELDDSARR'],
['1309.fna', 'SQTIYVWF'],
['974.fna', 'PNNLRFIA'],
['230.fna', 'IGKVYHIE'],
['76.fna', 'PGVHSVWV'],
['928.fna', 'HERGGAND'],
['520.fna', 'VLKTDTTG'],
['1290.fna', 'EAALDLHR'],
['25.fna', 'FCSILGVV'],
['284.fna', 'YHKLTFED'],
['1110.fna', 'KITSSSDF']],
dtype='|S18')

然后

h = h5py.File('data.hdf5', 'w')
dset = h.create_dataset('data', data=d)

给出:

<HDF5 dataset "init": shape (21, 2), type "|S18">

关于python - 使用 h5py 写入文件的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24437550/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com