0

私はこのコードを持っています:

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]である必要があります

4

2 に答える 2

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)
于 2011-12-29T19:27:51.907 に答える
0

行形式のデータを含むファイルをロードしようとしていますか?

はいの場合は、np.loadtxt を試してください

于 2011-12-30T04:32:13.160 に答える