파이썬 마스터 하기 7. 넘파이(numpy)

2023. 1. 12. 15:00·Python/개념 및 정리
반응형

넘파이는 파이썬의 대표적인 배열 라이브러리입니다.

넘파이는 파이썬의 고차원 배열을 손쉽게 만들고 조작할 수 있는 간편한 도구들을 많이 제공합니다.

 

우선 넘파이를 설치하는 방법부터 알아보겠습니다.

1
pip install numpy
cs

 

cmd(명령 프롬프트)에 복사한 뒤, 입력하시면 됩니다.

이미 numpy가 있으신 분들은 이런 글이 나옵니다.

만약에 pip install numpy를 해도 넘파이가 정상적으로 설치되지 않는 분들은 밑의 링크를 보시길 바라겠습니다.  https://aplab.tistory.com/entry/%ED%8C%8C%EC%9D%B4%EC%8D%AC-numpy-%EC%84%A4%EC%B9%98

 

파이썬(python) numpy 설치하는 3가지 방법

파이썬 numpy 패키지는 데이터 분석에서 많이 사용되는 패키지입니다. 그래서 설치하는 방법도 다양합니다. 패키지 설치하는 것은 쉽지만 에러가 발생했을 때 대응하는 것이 번거롭습니다. 그래

aplab.tistory.com

 

VSCODE에서 import numpy를 했을 때 밑줄이 나오지 않고 저렇게 되면 정상적으로 설치가 된 것입니다.

 

numpy가 정상적으로 설치되었다고 생각하고 설명을 하겠습니다.

 

1. array

2. arange

3. shape

4. reshape

5. 배열 인덱싱 / 슬라이싱

6. zeros,ones

7. random

 

1. array

1
2
3
4
5
6
import numpy as np
 
np_array = np.array([1,2,3,4,5])
a = list[1,2,3,4,5]
print(np_array,a)
print(np_array * 2)
cs

리스트가 있는데 굳이 왜 넘파이의 array 함수를 사용하지?라고 생각하시는 분들을 위해서 비교하는 코드를 준비해 왔습니다.

위 코드를 출력한 값입니다.

첫째 줄은 넘파이의 array함수와 리스트를 출력한 것입니다.

둘째 줄에서는 넘파이 array의 함수의 장점인 계산을 활용해서 array의 함수에 *2를 한 것입니다.

넘파이는 머신러닝, 딥러닝을 공부하기 위해서는 꼭 알아야 하는 모듈입니다. 

모델에 학습시키기 위해서는 데이터를 적절하게 가공해야 하는데 리스트는 불편한 반면 넘파이는 숫자만 처리하기 때문에 편하다는 장점이 있습니다.

 

2. arange

1
2
3
4
import numpy as np
 
np_arange = np.arange(25)
print(np_arange)
cs

두 번째는 arange입니다.

arange는 0부터 매개변수에서 1을 뺀 수까지 array형태로 만들어주는 함수입니다.

for 반복문처럼 시작값과 끝값 그리고 간격을 설정해줄 수 있습니다.

1
np_arange = np.arange(1,11,2)
cs

 

3.shape

 

1
2
3
4
import numpy as np
 
np_array = np.array([[1,2,3],[3,4,5]])
print(np_array.shape)
cs

shape 함수는 넘파이 배열의 형태를 알려주는 함수입니다.

현재 np_array 배열에는 2행 3열, 총 6개의 숫자가 있는 것을 볼 수 있습니다.

그러므로 출력값은 (2,3)입니다.

 

4.reshape

reshape 함수는 이름 그래도 다시 형태를 만들어주는 함수입니다.

위 shape 함수에서 사용했던 np_array 배열을 reshape 함수를 이용해 3행 2열의 형태로 바꿔보겠습니다.

 

1
2
3
4
5
import numpy as np
 
np_array = np.array([[1,2,3],[3,4,5]])
np_array = np_array.reshape(3,2)
print(np_array)
cs

np_array = np_array.reshape(3,2) 문장을 통해서 np_array의 형태를 3행 2열로 바꿨습니다.

데이터를 가공할 때 원하는 모습으로 바꾸려면 reshape 함수를 알아야 하므로 알아두면 좋은 함수중 하나입니다.

 

5. 배열 인덱싱 / 슬라이싱

 

1
2
3
4
5
6
7
import numpy as np
 
np_array = np.array([[1,2,3],[3,4,5]])
ex_list = [[1,2,3],[3,4,5]]
first = np_array[1,1]
second = ex_list[1][1]
print(first,second)
cs

우선 리스트와 넘파이 배열의 차이점에 대해 알아보겠습니다.

넘파이 배열은 [1,1]과 같은 형태로 값을 찾을 수 있는데 리스트는 [1][1]과 같은 형태로 값을 찾아야 합니다.

또한 넘파이 배열은 논리적인 인덱싱이 가능합니다.

1
2
np_array = np.array([1,2,3,4,5,6])
first = np_array[np_array>2]
cs

이렇게 하면 first에 np_array배열 중 2보다 큰 값들이 저장됩니다.

 

1
2
3
np_array = np.array([1,2,3,4,5,6])
first = np_array[1:3]
print(first)
cs

또한 넘파이 배열은 :(콜론) 연산자를 사용해서 원하는 부분의 값들을 슬라이싱 할 수 있습니다.

[1:3]을 하면 1,2번째 숫자를 추출할 수 있습니다.

6. ZEROS, ONES 

zeros, ones는 이름에서 유추할 수 있듯이 모든 원소가 0,1인 행렬을 만들어 주는 함수입니다.

 

1
2
zero = np.zeros((2,5))
print(zero)
cs

이렇게 하면 2행 5열의 형태로 0인 행렬이 만들어집니다.

 

1
2
one = np.ones((2,5))
print(one)
cs

ones 함수를 사용하면 2행 5열의 형태로 1인 행렬이 만들어집니다.

7. random

numpy 에는 random을 사용하는 정말 많은 함수가 있습니다. 

대표적으로 rand, randint , normal 3가지만 설명하겠습니다.

 

1. rand

rand 함수는 0과 1 사이에 무작위 값을 균일한 확률 분포로 생성하는 함수입니다.

1
2
rand = np.random.rand(3)
print(rand)
cs

rand는 0과 1 사이의 무작위 값이 3개 담긴 넘파이 배열입니다.

2. randint

randint는 특정한 값 사이 무작위 값을 생성하는 것으로 rand와 비슷한데 int가 있으므로 정수형으로 값을 생성한다.

1
randint = np.random.randint(1,10,3)
cs

위의 코드는 1부터 10 사이의 무작위 값 3개를 만드는 코드다. 뒤에 3을 쓰지 않으면 기본값이 1이므로 1개 만든다.

 

 

3. normal

normal 함수는 정규 분포로 값을 생성합니다. 

이때 평균과 표준 편차를 정해줄 수 있습니다.

1
normal = np.random.normal(10,5,5)
cs

이렇게 하면 평균이 10이고 표준편차가 5인 숫자 5개를 생성하는 것입니다.

숫자를 5개만 생성하면 이 숫자들이 정규분포로 생성한 게 맞나.. 싶지만 1000개 정도 생성한 다음 그래프로 만들면 정규분포로 생성되었구나를 알 수 있습니다.

 

반응형
'Python/개념 및 정리' 카테고리의 다른 글
  • 파이썬 마스터 하기 8. collections 모듈
  • 알면 좋은 파이썬 스타일 코드들
  • [알고리즘] 위상정렬(topological sorting) 파이썬으로 마스터 하기
  • [자료구조] 이진탐색(Binary Search) 파이썬으로 마스터 하기 & 백준 10815번: 숫자카드 (파이썬,Python3)
코딩하는_대학생
코딩하는_대학생
Java Developer, Open Source Enthusiast, Proud Son
  • 코딩하는_대학생
    코딩하는 대학생에서 개발자까지
    코딩하는_대학생
  • 전체
    오늘
    어제
    • 분류 전체보기 (218)
      • 코딩하는 대학생의 책 추천 (8)
        • 클린코드 (5)
        • 헤드퍼스트 디자인패턴 (3)
      • Backend (8)
        • Spring (14)
        • AWS (3)
        • 회고 (4)
        • Redis (5)
        • 다양한 시각에서 바라본 백엔드 (3)
      • Python (35)
        • 개념 및 정리 (15)
        • 백준 문제풀이 (20)
      • JAVA (17)
        • 개념 및 정리 (14)
        • 백준 문제풀이 (2)
      • 왜? (7)
      • C언어 (42)
        • 개념 및 정리 (9)
        • 백준 문제풀이 (32)
      • 개인 공부 (27)
        • 대학 수학 (5)
        • 대학 영어 (10)
        • 시계열데이터 처리 및 분석 (5)
        • 컴퓨터 네트워크 (6)
        • 운영체제 (1)
      • 솔직 리뷰 (23)
        • 꿀팁 (6)
        • IT기기 (1)
        • 국내 여행 (7)
        • 맛집 (2)
        • 알바 리뷰 (2)
      • 대외활동 (17)
        • 체리피우미 3기 (4)
        • 꿀잠이들 6기 (13)
      • 음식 평가 (1)
      • 일상 & 근황 (2)
  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코딩하는_대학생
파이썬 마스터 하기 7. 넘파이(numpy)
상단으로

티스토리툴바