100 * 100 の大きさで対角がすべて-1.0を作成します。
data = 1.0
for j in range(10000):
x = numpy.zeros((100,100))
for i in xrange(100):
x[i][i] = data * -1.0
0.405 sec/10000回
data = 1.0
for j in range(10000):
x = numpy.zeros(10000)
for i in xrange(100):
x[i*100+i] = data * -1.0
x.resize((100,100))
0.296 sec/10000回
for j in range(10000):
y = [0.0] * 10000
for i in xrange(100):
y[i*100+i] = data * -1.0
x = numpy.array(y)
x.resize((100,100))
3.762 sec/10000回
でした。また、行列をべた書きするのも3-4秒かかることから、1次元のnumpy.arrayで作成し、numpy.resizeするのが最も高速。のようです。
もっと早くする方法があったら伝授のほどよろしくお願いします。
0 件のコメント:
コメントを投稿