11

numpyで単位行列を作成するにはどうすればよいですか?より単純な構文はありますか

numpy.matrix(numpy.identity(n))
4

3 に答える 3

16

より簡単な構文は次のとおりです。

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
于 2012-06-09T03:30:15.677 に答える
11

また、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.]])
于 2015-08-01T08:22:40.837 に答える
5

もっと簡単な解決策はないと思います。ただし、少し効率的に行うことができます。

numpy.matrix(numpy.identity(n), copy=False)

これにより、データを不必要にコピーすることを回避できます。

于 2012-06-07T16:13:28.093 に答える