加速切割大numpy阵列

时间:2012-05-15 16:12:57

标签: python numpy slice pytables

我有一个存储在pyTables文件中的大数组(1000x500000x6)。我正在做一些在速度方面进行了相当优化的计算,但花费最多时间的是数组的切片。

在脚本开头,我需要获取行的子集:reduced_data = data [row_indices,:,]然后,对于这个简化的数据集,我需要访问:

  • 列一个接一个:reduced_data [:,clm_indice,:]
  • 列的子集:reduced_data [:,clm_indices,:]

获取这些数组需要永远。有没有办法加快速度?以不同方式存储数据?例如?

1 个答案:

答案 0 :(得分:1)

您可以尝试明智地选择阵列的chunkshape,请参阅:http://pytables.github.com/usersguide/libref.html#tables.File.createCArray 此选项控制数据以物理方式存储在文件中的顺序,因此可能有助于加快访问速度。

幸运的是,对于您的数据访问模式,chunkshape=(1000, 1, 6)之类的内容可能会有效。