numpyで単位行列を作成するにはどうすればよいですか?より単純な構文はありますか
numpy.matrix(numpy.identity(n))
より簡単な構文は次のとおりです。
np.matlib.identity(n)
そして、これがはるかに高速に実行されるさらに単純な構文です。
In [1]: n = 1000
In [2]: timeit np.matlib.identity(n)
100 loops, best of 3: 8.78 ms per loop
In [3]: timeit np.matlib.eye(n)
1000 loops, best of 3: 695 us per loop
また、np.eyeを使用してID配列(In)を作成することもできます。
例えば、
>>> np.eye(2, dtype=int)
array([[1, 0],
[0, 1]])
>>> np.eye(3, k=1)
array([[ 0., 1., 0.],
[ 0., 0., 1.],
[ 0., 0., 0.]])
もっと簡単な解決策はないと思います。ただし、少し効率的に行うことができます。
numpy.matrix(numpy.identity(n), copy=False)
これにより、データを不必要にコピーすることを回避できます。