python中carrays的问题

时间:2011-12-29 17:50:29

标签: python arrays performance interop pytables

我有这段代码:

import numpy as np
import tables as tb

ndim = 50000
h5in = tb.openFile('data.h5','r')
data = h5in.root.x

h5out = tb.openFile('testout.h5', mode='w', title="argsort distances")
root = h5out.root
x = h5out.createCArray(root,'x',tb.Int16Atom(),shape=(ndim,ndim))

for i in xrange(ndim):
    x[:,i] = np.argsort(dist[i,:])

这需要永恒的执行。是否有任何方法可以加快速度?

注意:必须是x [:,i]而不是x [i,:]

2 个答案:

答案 0 :(得分:1)

将for循环替换为:

x[:,:] = np.argsort(dist, axis=1).T 

更新:如果这个太大,请尝试在切片大小中找到折衷方案:

slice_size = 100 # or 1000 if it fits into your memory
for i in xrange(0, ndim, slice_size):
    x[:,i:i+slice_size] = np.argsort(dist[i:i+slice_size,:], axis=1)

答案 1 :(得分:0)

您是否尝试加载包含行形式数据的文件?

如果是,请尝试np.loadtxt