【发布时间】:2012-05-15 16:12:57
【问题描述】:
我有一个存储在 pyTables 文件中的大数组 ( 1000x500000x6 )。我正在对其进行一些在速度方面进行了相当优化的计算,但最耗时的是数组的切片。
在脚本的开头,我需要获取行的子集:reduce_data = data[row_indices, :, :] 然后,对于这个缩减的数据集,我需要访问:
- 一列一列:reduce_data[:,clm_indice,:]
- 列的子集:reduce_data[:,clm_indices,:]
获取这些数组需要很长时间。有什么办法可以加快速度吗?例如以不同的方式存储数据?
【问题讨论】:
-
我认为您应该尝试按行获取它们,因为这是(我相信)它们在文件中的排序方式。在这么大的桌子上,它可以产生很大的不同。
-
PyTables 数据是存储在表还是数组中?
-
@dtlussier 数据存储在压缩的 Carray 中。
-
@Lior 我考虑过这一点,但我也按行访问数据,因此它将问题从我的脚本中间移到开头......但是,因为还有更多行的列,也许它会加快转置数据的速度。
-
对于数组-我认为@pv。下面的答案是一个好的开始。可以存储为表格吗?这将允许以类似于数据库查询的方式更轻松地访问列或行子集。
标签: python numpy slice pytables