在PyTables阵列上的a​​rgsort

时间:2015-08-31 13:28:26

标签: python arrays numpy pytables

我对NumPy的argsort有疑问。它在内存中创建一个输入数组长度的int64数组。由于我正在处理非常大的数组,这会破坏内存。

我用一个小的PyTables'carray测试了NumPy的argsort,它给出了正确的输出。现在,我想要的是排序算法直接使用PyTables的数组。有没有办法用标准的NumPy调用或NumPy内部的简单入侵?

我也对非NumPy替代品持开放态度 - 我只想完成工作!

1 个答案:

答案 0 :(得分:1)

由于您正在使用Pytables,我建议您使用内置排序的Table类。

%pylab

import tables
#create description of your table
class Table_Description(tables.IsDescription):
    column_name = tables.Int64Col()   

#create hdf5 file and table
f=tables.open_file('test.h5',mode="w")
a=f.create_table("/","my_table",description=Table_Description)

# fill table
a.append(array([randint(0,99999) for i in xrange(10000)]))

#Create a full index (on disk if you use the tmp_dir parameter
a.cols.column_name.create_index(9,kind='full',tmp_dir="/tmp/")

#write changes to disc
a.flush()

#read indices that will sort the table
ind=f.root.my_table.cols.column_name.index
ind.read_indices()