2012-06-07 15 views

答えて

13

は簡単な構文です:

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 
+2

'matlib'を使う必要がありますか? 'np.eye(n)'だけではできません。 'matlib'は、numpy配列を生成する"通常の "numpy関数とは対照的に、特に行列を生成します。 –

+0

文書によると、np.eyeは必ずしも正方行列を作成するとは限りません。 np.matlib.eyeを使ったパフォーマンスの向上については、わかりません。 – hlin117

5

より簡単な構文は、私が単純解決策があるとは思わないあります。あなたはしかし、わずかより効率的にそれを行うことができます。これは、不必要にデータをコピーすることを回避する

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

。ここで

+2

は..あなたは' np.eye'と、この1との違いは何であるかを知っていますか? – wim

+0

@wim:違いはありません。 'numpy.eye()'は少し柔軟です。 NumPyのインターフェイスは非常に合理化されておらず、機能が重複している多くの機能が存在します。 –

+2

@wim:[docs](http://docs.scipy.org/doc/numpy/reference/generated/numpy.eye.html)によると 'np.eye'は' np.identity'に似ていますが、追加されています機能性。列のサイズを指定し、対角線をシフトすることができます。 –

4

はまたnp.eyeアイデンティティ配列(In)を作成するために使用することができます。

np.matlib.identity(n) 

そしてここでは、はるかに高速に実行しても簡単な構文です。私は `np.identity`、常に使用目を使用したことがない例えば

>>> 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.]]) 
+0

なぜこれはダウン表示されますか? –

+0

私はまた知りたいです... – mbdevpl

関連する問題