首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用python读取hdf5矩阵

使用python读取hdf5矩阵
EN

Stack Overflow用户
提问于 2017-03-28 00:25:42
回答 1查看 70关注 0票数 0

我将一个巨大的序列(1000000)的小矩阵(32x32)存储在一个hdf5文件中,每个矩阵都有一个标签。这些矩阵中的每个矩阵表示特定时间的传感器数据。

我想要获得每个像素在一个小时间片内的演变,对于矩阵中的每个x,y位置都不同。

这比我预期的花费了更多的时间。

代码语言:javascript
复制
  def getPixelSlice (self,xpixel,ypixel,initphoto,endphoto):

       #obtain h5 keys inside time range between initphoto and endphoto
       valid=np.where(np.logical_and(self.photoList>=initphoto,self.photoList<endphoto)) 

       #look at pixel data in valid frames
       evolution = []

       #for each valid frame, obtain the data, and append the target pixel to the list.
       for frame in valid[0]:
           data = self.h5f[str(self.photoList[frame])]          
           evolution.append(data[ypixel][xpixel])

       return evolution,valid
EN

回答 1

Stack Overflow用户

发布于 2017-03-28 00:34:48

所以,这里有一个问题,我花了一段时间来整理类似的应用程序。由于硬盘驱动器的物理限制,数据以这样一种方式存储,即使用三维数组,在一个方向上总是比在另一个方向上更容易读取。这完全取决于您存储数据的顺序。

如何处理此问题取决于您的应用程序。我的特定应用程序可以被描述为“写得少,读得多”。在这种情况下,以我期望读取数据的顺序存储数据是最有意义的。为此,我使用PyTables并指定一个与我的时间序列相同的“块形状”。因此,在您的情况下,它将是(1,1,1000,000)。不过,我不确定这个大小是否太大,所以您可能需要进一步细分它,比如(1,1,10000)或类似的东西。

For more info see PyTables Optimization Tips.

对于需要多次读取特定方向的应用程序,为HDF5数组选择合适的卡盘形状至关重要。

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

https://stackoverflow.com/questions/43051678

复制
相关文章

相似问题

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