PTT
Submit
Submit
选择语言
正體中文
简体中文
PTT
Python
[问题] 请教hdf5读取速度问题
楼主:
kakar0to
(Poker Face)
2021-05-14 15:03:38
请教大家一下,我有一个large size的hdf5档案.
档案里面存放一个large matrix, shape是(15579,81173)
我需要从这个matrix的15579个row里面, 随机取出128个row出来给AI model使用.
现在遇到的问题是读取速度很慢, 取出128个row大概要花10秒以上的时间.
想请问大家有更快读取的作法吗?
感谢.
以下附上程式码.
import h5py
import numpy as np
h5 = h5py.File('file.h5', 'r')
matrix = h5['matrix/data']
random_list = np.random.randint(matrix.shape[0], size=128)
rows = matrix[random_list,:]
感谢大家回答.
作者:
DavisX
2021-05-14 16:43:00
资料太大会慢正常
作者:
kokolotl
(nooooooooooo)
2021-05-14 19:56:00
摊平塞lmdb呢
作者:
DavisX
2021-05-14 20:56:00
flatten完应该会快一点
楼主:
kakar0to
(Poker Face)
2021-05-15 10:41:00
是否有办法知道matrix在file的offset?我可以用c code去读出这个matrix, 可能会比较快用c的fread与fseek去读我想要的row
作者:
a0956072892
(henk2525)
2021-05-16 19:22:00
以前有用过hdf5 chunk_shape这个参数会影响读取速度在存hdf5时试试用(1,81173)去切
作者:
lycantrope
(阿宽)
2021-05-18 10:36:00
储存成15579 * (1,81173)的hdf5
楼主:
kakar0to
(Poker Face)
2021-05-21 22:20:00
有查到一个方法还不错 跟大家分享一下
https://gist.github.com/maartenbreddels/09e1da795771
51e5f7fec660c209f06e他是先把matrix储存成dataset, dataset可以知道file的offset, 再透过mmap mapping整个file到内存.再来就可以直接存取matrix了, 速度相当快.另外其实有offset之后, 也可以透过c语言的fseek,fread同样也可以快速存取matrix
作者:
lycantrope
(阿宽)
2021-05-24 12:16:00
喔哦,感谢分享!
继续阅读
[问题] selenium 开新分页 使用threading 控制
kiey
[问题] linebot图片接收问题
jack155861
[问题] 在目标高负载下的请求失败问题
touge
[问题] 使用pip检视,更新和解除安装套件(已解决)
s4340392
[问题] 新手问个pandas修改问题
W5566DerD1
Re: [问题] pyptt遇到的问题已询问作者但无解
ddavid
[问题] pyptt遇到的问题已询问作者但无解
chin2049
[问题] 有关argument
freeedward
[问题] (已解决)跪求大神们解答,应该是变量的值互换的题
knlove1220
[问题] 用 selenium 开启网页读 socket
kiey
Links
booklink
Contact Us: admin [ a t ] ucptt.com