본문 바로가기

Numpy

Numpy - 3차원 배열 인덱싱

반응형

https://steadiness-193.tistory.com/50

 

Numpy - 3차원 axis 이해하기

3차원 텐서를 이용하기 위해 데이터를 불러온다. z는 (4행, 3열)의 2차원 데이터가 3개가 있다는 뜻이다. 위 텐서의 shape은 (3, 4, 3)으로서 (차원, 행, 열)로 보면 쉽다. axis는 따라서 0, 1, 2의 값을 가��

steadiness-193.tistory.com

위 포스팅에서 3차원 축에 대한 전반적인 이해를 했다.

 

이번엔 3차원 배열을 인덱싱 하는 것을 알아보자

 

 

 

배열 만들기

 

 

3행 3열의 배열, 2개가 겹쳐진 경우이다.

(2, 3, 3) = (차원, 행, 열)

 

 

 

 

 

 

0번째 차원의 모든 행, 열

 

 

2, 3, 3 shape에서 차원을 선택했기에 3행 3열의 배열만 남았다.

 

0번째 차원의 모든 데이터가 살아남았다.

 

이는 직관적으로도 이해하기 쉽다.

 

 

 

 

 

모든 차원의 0번째 행, 모든 열

 

 

2, 3, 3 shape에서 행을 선택했기에 2행 3열의 배열이 남는다.

 

여기까지도 직관적으로 이해가 쉽다.

 

 

 

 

 

 

모든 차원의 모든 행, 2번째 열

(그림으로 보기 쉽게 마지막 번째의 열을 뽑는다.)

 

 

 

2, 3, 3 shape에서 열을 선택했기에 2행 3열의 배열이 남는다.

 

그런데 이는 행을 골랐을 때와 같은, 2행 3열로 나오기에 직관적으로 이해가 쉽지 않다.

 

추출되는 과정을 보기 쉽게 그려보면 아래와 같다.

 

 

 

 

그러나, 열을 추출했을 때의 일반적으로는 아래와 같은 배열을 기대할 것이다.

 

 

위 배열은 3행 2열이다.

 

즉, 처음에 뽑아낸 2행 3열을 전치해주면 되는 것이다.

 

 

 

 

 

모든 차원의 모든 행, 2번째 열 → 전치

 

 

T를 이용해 행과 열을 바꿔주면 기대했던 배열 구성으로 결과를 볼 수 있다.

 

 

반응형

'Numpy' 카테고리의 다른 글

Numpy - apply_along_axis  (0) 2020.08.24
Numpy - random : rand, randn  (0) 2020.08.12
Numpy - random : normal, uniform, randint, choice  (0) 2020.08.12
Numpy - np.log, np.log1p, np.exp  (0) 2020.08.12
Numpy - 등간격으로 나누기 : np.linspace  (0) 2020.08.08