これはあなたが探している答えではないかもしれませんが、大幅に高速化する 1 つの方法は、CPU の代わりに GPU を使用することです。かなり強力なグラフィックス カードがあれば、システムが非常によく調整されていても、いつでも CPU のパフォーマンスを上回ります。
numpy とうまく統合するには、theano を使用できます (グラフィック カードが nvidia 製の場合)。次のコードの計算は数秒で実行されます (非常に強力なグラフィック カードを使用していますが)。
$ THEANO_FLAGS=device=gpu0 python
Python 2.6.5 (r265:79063, Apr 16 2010, 13:57:41)
[GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import theano
Using gpu device 0: GeForce GTX 480
>>> from theano import tensor as T
>>> import numpy
>>> x = numpy.ones((200000, 1000), dtype=numpy.float32)
>>> m = T.matrix()
>>> mTm = T.dot(m.T, m)
>>> f = theano.function([m], mTm)
>>> f(x)
array([[ 200000., 200000., 200000., ..., 200000., 200000., 200000.],
[ 200000., 200000., 200000., ..., 200000., 200000., 200000.],
[ 200000., 200000., 200000., ..., 200000., 200000., 200000.],
...,
[ 200000., 200000., 200000., ..., 200000., 200000., 200000.],
[ 200000., 200000., 200000., ..., 200000., 200000., 200000.],
[ 200000., 200000., 200000., ..., 200000., 200000., 200000.]], dtype=float32)
>>> r = f(x)
>>> r.shape
(1000, 1000)
比較のためにどれくらいの時間がかかるかを待つつもりでしたが>>> numpy.dot(x.T, x)
、退屈しました...
PyCuda または PyOpenCL (nvidia グラフィックス カードを持っていない場合) を試すこともできますが、それらの numpy サポートが簡単かどうかはわかりません。