2015-02-06 14 views
18

numpyeyeidentity에 대한 매뉴얼 페이지를 통해보고하는 데, 나는 덜 옵션 (예 : eye 이동 채울 수 대각선, identity 수 없습니다)를 가지고 있기 때문에, identityeye의 특별한 경우라고 가정 싶지만, 그럴듯하게 실행할 수 있습니다 더 빠르게.numpy.idente보다 numpy.identity를 사용하면 어떤 이점이 있습니까?

>>> np.identity(3)             
array([[ 1., 0., 0.], 
     [ 0., 1., 0.], 
     [ 0., 0., 1.]]) 
>>> np.eye(3)              
array([[ 1., 0., 0.], 
     [ 0., 1., 0.], 
     [ 0., 0., 1.]]) 
>>> timeit.timeit("import numpy; numpy.identity(3)", number = 10000) 
0.05699801445007324 
>>> timeit.timeit("import numpy; numpy.eye(3)", number = 10000)  
0.03787708282470703 
>>> timeit.timeit("import numpy", number = 10000)     
0.00960087776184082 
>>> timeit.timeit("import numpy; numpy.identity(1000)", number = 10000) 
11.379066944122314 
>>> timeit.timeit("import numpy; numpy.eye(1000)", number = 10000)  
11.247124910354614 

그렇다면, eye 이상 identity을 사용하는 장점은 다음과 같습니다 그러나이 작거나 큰 배열 중 하나의 경우가 아니다?

답변

27

identity 단지 eye을 호출하므로 배열 구성 방법에는 차이가 없습니다. 여기 identity의 코드 : 당신이 말하는 것처럼 identity은 주 대각선을 채우는 반면

def identity(n, dtype=None): 
    from numpy import eye 
    return eye(n, dtype=dtype) 

, 주요 차이점은, eye와 대각선 캔이 상쇄 될 수 있다는 것이다.

단위 행렬은 수학에서 공통적 인 구성이므로, identity을 사용하는 주된 이점은 그 이름만을위한 것 같습니다.

관련 문제