Python도 처음부터 정리를 하고 싶지만, 지금 듣는 파이썬 수업이 다음 주에 시험이라서 시험 준비할 겸 numpy 라이브러리에 대한 기본적인 사항들 먼저 정리해 봅니다.
numpy 라이브러리 설치
파이썬은 유저들이 만든 다양한 라이브러리들이 존재합니다. numpy도 그 중에 하나이고 행렬이나 수치를 다루는 데 있어 굉장히 유용한 라이브러리 입니다.
이런 라이브러리들은 사용하기 전에 항상 설치를 해줘야 합니다. 각 작업 환경에 맞는 명령 프롬프트 창에서 설치를 해주면 됩니다. 이건 numpy만이 아니라 다른 라이브러리도 다 마찬가지입니다.
옛날에 쥬피터에서 할 때는
pip install numpy
일반 도스창에서 이렇게 입력하면 됩니다. 저는 이번 설치가 되있다고 나오네요.
제가 지금은 spyder에서 주로 작업하고 있어서 miniconda 프롬프트에서 설치를 했습니다. 이게 저번에 도스창에서 설치를 했어도 작업 환경이 달라지면 해당하는 공간에서 또 설치를 해야합니다.
그래서 저는 제가 수업시간에 쓰는 [class]라는 환경에서
conda install numpy
이렇게 또 설치를 했습니다.
라이브러리 설치에 관한 포스팅을 따로 남기는 게 좋을 것 같다는 생각이 드네요.
라이브러리를 설치하면 또 코딩할 때 불러서 써야합니다. 보통 numpy는 np로 줄여서 많이 불러냅니다.
import numpy as np
numpy를 쓰는 가장 큰 이유는 파이썬에서 행렬을 다루기 위함일 것입니다. 사실 행렬을 다루는 것은 아마 파이썬보다 MATLAB이 더 편할 수도 있습니다. 하지만 최근에 AI 관련해서 파이썬을 많이 쓰다보니까 자연스럽게 파이썬 내 numpy를 이용하는 일이 늘어나지 않았을까 싶습니다.
행렬 만들기
np.array()
이제 행렬을 만드는 법을 한 번 보도록 하겠습니다.
list랑 많이 비슷한데 list() 대신 np.array()를 사용하면 됩니다.
np.array([1, 2, 3])
하면 3개의 element를 가지는 1D 행렬이 만들어집니다.
ND array
행렬은 차원이 존재하죠. 내가 만약 ND 행렬을 만들고 싶다하면 대괄호 껍질 N개 만큼 필요하다고 생각하시면 편합니다.
예컨대 3*3 2D array는
np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
이런 식으로 적어줍니다. 제가 실수하는 부분 중에 하나는 컴마를 빼먹는 것인데, 항상 괄호랑 컴마를 잘 확인하셔야 합니다. 참고로 MATLAB이 컴마를 안 써도 띄어쓰기 만으로 element 구별이 됩니다.
추가로 똑같은 [1, 2, 3]이어도 1D일 수 있고, 1*3 2D array일 수도 있겠죠. 정의를 할 때 2D로 만들고 싶으면 대괄호 껍질을 두개로 싸주면 됩니다.
np.array([[1, 2, 3]])
차원에 대한 이야기는 사실 선형대수 내용이니까 생략하도록 하겠습니다.
이렇게 생성된 행렬에서 dimension axis, 즉 방향축 값은
행에 대한 방향(아래 방향)이 0이고, 열에 대한 방향(오른쪽 방향)이 1이라고 생각하시면 됩니다.
np.arange()
그런데 이제 일일이 element를 입력하기 힘들 때도 있을 겁니다. 그럴 때는 list만들 때처럼 range() 함수를 사용하셔도 됩니다.
np.array(range(1,5))
이렇게 입력하면 [1, 2, 3, 4] 1D 행렬이 만들어집니다.
근데 편의상 np.array(range())와 같은 기능을 하는 게 있습니다. 바로 np.arange() 입니다.
np.arange(1,5)
라고 입력하면 앞에 np.array(range(1,5))와 같은 결과를 확인할 수 있습니다.
np.arange()는 시작값이 0으로 defalt 설정이 되어 있어서
np.arange(5)
로 입력하면 [0, 1, 2, 3, 4]로 만들어지게 됩니다.
range와 마찬가지로 step 설정도 가능합니다.
np.arange(0, 10, 2)
하면 0부터 10 전까지 2간격으로 생길 것입니다.
np.linspace()
다음으로 np.arange()와 비슷한 np.linspace()라는 함수도 소개하려고 합니다.
계속 파이썬을 하면서 아직도 실수를 하는 부분 중에 하나가 range(0, 10)라고 하면 10 전까지가 아니라 10까지라고 생각하게 되는 경우가 종종 있다는 것입니다. 이거는 일상생활에서 10까지로 생각해왔기 때문에 코딩을 할 때도 무의식 중에 10까지라는 생각이 먼저 떠오르는 게 아닐까 싶습니다.
np.linspace()를 사용하게 되면 그런 실수를 막을 수 있습니다. 대신 parameter가 조금 다르긴 합니다.
np.linspace(시작, 끝, 등분)로 시작과 끝은 동일하지만 마지막 변수가 등분, 즉 element의 갯수입니다. sample 갯수라고 할 수도 있겠죠. [0, 2, 4, 6, 8, 10]을 만들고 싶으면 0부터 10까지 6등분이니까 다음과 같이 입력하면 됩니다.
np.linspace(0, 10, 6)
지금 보시면 linspace()의 결과는 뒤에 소수점이 붙어있습니다. int 타입이 아니라 float 타입이라는 뜻입니다. 이게 또 arange()와의 차이라고 할 수 있습니다.
'IT > 파이썬' 카테고리의 다른 글
[Python] PIL.Image로 이미지 파일 열어 보기 (0) | 2024.05.21 |
---|---|
[Python] matplotlib.pyplot - 간단한 그래프 그리기 (0) | 2024.05.20 |
[Python] numpy 기본 - matrix attribute (ndim, shape, dtype, size, itemsize, transpose) (0) | 2024.05.16 |
파이썬 다운로드 (0) | 2023.11.12 |