안녕하세요! 넘파이 라이브러리 관련 첫 포스팅입니다.
이번 첫 포스팅에서는 넘파이 배열의 shape 속성에 대해 알아보도록 하겠습니다.
넘파이 배열의 연산이 어떻게 수행되는지 알기 위해서는 shape 속성에 대한 이해가 필요합니다.
1. shape 속성 읽는 방법
1-1. 스칼라 → 벡터
스칼라가 여러 개 모이면 1차원 배열(벡터)을 형성합니다.
위 그림에서는 3개의 스칼라가 모여 shape이 (3, )인 1차원 배열이 만들어집니다.
이때 만들어진 벡터를 보고 다음과 같이 생각해 볼 수 있어야 합니다.
"1차원 배열이 3개의 원소로 구성되어 있네? 그리고 그 각 원소는 스칼라구나!"
1-2. 벡터 → 행렬
1차원 배열(벡터)이 여러 개 모이면 2차원 배열인 행렬을 이룹니다.
위 그림에서 shape이 (3, 3)인 행렬을 보고 다음과 같이 생각할 수 있어야 합니다.
"행렬은 총 3개의 원소로 이루어져있구나!
그리고 그 각 원소는 shape이 (3, )인 1차원 배열이고..
어 그런데 각 1차원 배열은 또 3개의 스칼라들로 구성되는구나!"
1-3. 행렬 → 3차원 배열
2차원 행렬이 여러 개 모이면 3차원 배열이 됩니다.
마찬가지로 위 그림에서 3차원 배열을 보고 다음과 같이 생각해봐야 합니다.
"3차원 배열은 3개의 원소로 구성되는구나.
그리고 그 각 원소는 shape이 (3, 3)인 2차원 배열이고..
어 그런데 각 2차원 배열은 다시 3개의 원소로 구성되네!
이번에는 각 원소가 shape이 (3, )인 벡터고,
그러면 각 벡터는 최종적으로 스칼라 3개로 구성되는거구나!"
2. shape 속성 읽는 방법(일반화)
앞서 확인한 넘파이 배열의 shape 속성 읽는 방법을 일반화 해보겠습니다.
원리는 간단합니다!
바로 배열의 shape 속성값을 앞에서부터 하나씩 지워 나가면서 읽으면 됩니다.
일반화를 위해 shape이 (o, n, m)인 3차원 배열을 하나 가정하겠습니다.
제일 먼저 'o'부터 읽으면 됩니다.
"이 배열은 또 다른 o개의 넘파이 배열로 구성되는구나"
그러고나서 머리속에서 o를 지우면 shape 속성은 (n, m)이 남습니다.
이 과정을 정리해보면 shape이 (n, m)인 배열이 총 o개 존재한다고 볼 수 있습니다.
이제는 'n' 차례입니다.
"shape이 (n, m)인 배열은 n개의 배열로 이루어져있구나!"
그러고나서 머리속에서 n을 지우면 shape 속성은 (m, )이 됩니다.
다시 말해서 shape이 (m, )인 배열이 총 n개 존재하는 것입니다.
마지막으로 한 번 더 살펴보겠습니다.
"shape이 (m, )인 1차원 배열은 m개의 스칼라로 구성되는구나!"
이렇게 shape 속성을 앞에서부터 차례대로 각 차원에 해당하는 값을 읽어나가면 아무리 복잡한 고차원 배열을 마주하더라도 문제없이 그 구조를 파악할 수 있습니다.
마치며
이상으로 넘파이 배열의 shape 속성을 이해하는 방법에 대한 정리를 마치겠습니다.
방금 정리한 내용이 복잡한 배열의 형태를 쉽게 파악할 수 있도록 돕는 나침반이 되길 바랍니다!
다음 포스팅에서는 넘파이 배열을 생성하는 방법과 넘파이 배열의 기본 속성에 대해 알아보도록 하겠습니다.
넘파이 배열의 생성법과 기본 속성 이해하기
이번 포스팅에서는 넘파이 배열을 생성하는 방법과 넘파이 배열의 속성에 대해 알아보도록 하겠습니다. import numpy as np 1. 넘파이 배열 생성하기 넘파이 배열을 만드는 여러 메서드가 존재합니다
parix-data.tistory.com
'파이썬・ML > numpy' 카테고리의 다른 글
넘파이 배열의 형태 조작하기(reshape/resize) (0) | 2023.07.27 |
---|---|
넘파이 배열의 생성법과 기본 속성 이해하기 (0) | 2023.07.27 |
넘파이 np.repeat(), np.tile() 배열 반복하기 (0) | 2023.06.16 |
넘파이 np.hstack(), np.vstack(), np.concatenate() 배열 합치기 (0) | 2023.06.16 |
넘파이 배열의 차원 다루기 (0) | 2023.06.15 |