我有这段代码:
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,:]
答案 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