ndarray.T는 언제 업데이트됩니까? [복제]
Numpy에서는 메서드로 a ndarray를 전치 할 수 transpose()있지만 속성 T도 있습니다.
a ndarray가 변경 되면 transpose()메서드 의 반환 값 뿐만 아니라 속성도 T동시에 자동으로 업데이트됩니다.
ndarray.transpose()함수이므로 궁금하지 않습니다. 그러나은 T함수가 아니라 단순한 속성이므로 액세스하기 전에 업데이트해야합니다.
모든 Numpy 함수와 메소드
T가 호출 될 때마다 속성을 업데이트 합니까?그렇다면 그 이유는 무엇입니까? 거대한 행렬을 처리 할 때 전치와 관련이 없더라도 모든 연산의 계산 비용이 매우 클 수 있습니다. 매번 속성
transpose()을 다시 작성하는 대신 필요할 때만 호출하는 것이 더 합리적이지T않습니까?
다음은 간단한 예입니다.
>>> import numpy as np
>>> x = np.array([[1, 2, 3],
... [4, 5, 6]])
...
>>> x
array([[1, 2, 3],
[4, 5, 6]])
>>> x.T
array([[1, 4],
[2, 5],
[3, 6]])
물론 x동시에 작업도 변경 x.T됩니다. 언제 x.T업데이트 되었습니까? 했어요 x.__imul__()?
>>> x *= 100
>>> x
array([[100, 200, 300],
[400, 500, 600]])
>>> x.T
array([[100, 400],
[200, 500],
[300, 600]])
답변
T와 동일한 속성이 .transpose()변경된 형상 (및 진보)가 단지 한 도면이다. 실제 내용의 메모리가 동일 (당신은을 사용 id(x[0,0])하고 id(x.T[0,0]), 예를 들어이를 확인하기 위해)하지만, 개체 속성은 알 numpy을 해석하는 방법. 2D 배열의 경우 보폭과 모양은 원래 배열의 반대입니다. 보폭에 대한 자세한 내용은 문서를 참조하십시오 . 이것이 콘텐츠가 변경 될 때 즉시 일어나는 이유입니다. 메모리 셀은 새로운 숫자를 얻지 만 .T배열 의 해석은 변경되지 않습니다.