파이썬 배열만들기 - paisseon baeyeolmandeulgi

코인시던스의 기록

파이썬

numpy 사용 이유? numpy 배열 만들기, 난수 배열 만들기

코인시던스 2021. 1. 27. 21:28

1. Numpy 란?

Numerical Python 으로 Python 에서 '대규모 다차원 배열'을 다룰 수 있게 도와주는 라이브러리 입니다.

파이썬 배열만들기 - paisseon baeyeolmandeulgi

※ 참고로 왜 '대규모 다차원 배열'을 사용할까요?

데이터의 대부분은 숫자 배열로 볼 수 있기 때문입니다. 예를 들어 흑백 이미지는 픽셀의 밝기와 명암을 2차원 배열 데이터로 표현할 수 있고. 사운드 데이터는 시간 대비 음악을 나타내는 1차원 배열로 볼 수 있습니다. 이렇게 데이터를 배열로 보고, 배열을 효과적으로 저장, 가공하는 것이 데이터를 처리하는 가장 근본적인 절차입니다.

파이썬 배열만들기 - paisseon baeyeolmandeulgi

2. Numpy 사용 이유

List 대신 Numpy 를 사용하는 이유는 비교적 빠른 연산을 지원하고 메모리를 효율적으로 사용하기 때문입니다.

3. List 로 부터 Numpy 배열을 만드는 법

아래 사진과 설명을 참조해주세요.

- import numpy as np

  ① import numpy : 라이브러리 이기 때문에 import 를 통해서 numpy 를 가지고 옵니다.

  ② as np : 관습적으로 numpy 는 np 로 줄여서 사용합니다. as np 를 붙여서 np 로 줄여서 쓸 수 있게 합니다.

- np.array([1,2,3,4,5]) : 리스트를 넣어주면 array 개체가 반환됩니다.

파이썬 배열만들기 - paisseon baeyeolmandeulgi

리스트로부터 다양한 배열의 형태를 만들 수 있는데요. 정수형태가 아닌 실수 형태로 들어갔을 때는 모든 데이터가 실수로 바뀝니다. 2차원 배열도 만들 수 있으며, 데이터의 타입도 정할 수 있습니다.

파이썬 배열만들기 - paisseon baeyeolmandeulgi

list 는 [1, True, 1.4, "s"] 처럼 실수형, boolean, 정수형, 문자열 type 에 관계 없이 구성될 수 있지만, array 는 list 와 다르게 단일타입으로 구성됩니다.

dtype = float 으로 해주면 array 가 모두 실수형으로 구성되고, arr.dtype 를 통해 type 을 확인할 수 있습니다.

데이터 타입을 바꾸기 위해서는 astype(바꿀데이터자료형) 을 쓰시면 됩니다.

파이썬 배열만들기 - paisseon baeyeolmandeulgi

int (정수형 타입) : int32 < int64 = i8

float (실수형 타입) : float_ = float64 = f8

str (문자열 타입) : str, U(= 유니코드의 약자)

파이썬 배열만들기 - paisseon baeyeolmandeulgi

배열 만드는 방법을 알아볼까요? 자세한 예시는 아래 그림을 참조해주세요.

np.zeros 함수 : data 를 0 으로 채워줍니다.

   ex) np.zeros(10, dtype=int) : 0 으로 10 개의 데이터를 가진 정수형 타입만들기

np.ones 함수 : data 를 1 로 채워줍니다. 배열은 튜플 형태로 적어줍니다.

  ex) np.ones((3,5), dtype=float) : (3,5) 배열로 실수형 타입 만들기

np.arrange 함수 : 파이썬의 range 함수와 비슷하게 동작합니다.

  ex) np.arange(0, 20, 2) 0~20전까지 step 을 2개 뛰면서 나타내기

np.linspace 함수

  ex) np.linspace(0, 1, 5) 0~1 사이를 5개로 나눠서 만들기

np.random 에 있는 함수들을 사용해서 난수로 채워진 배열을 만들 수도 있습니다.

np.random.random : 튜플을 인자로 받게 됩니다.

  ex) np.random.random((2,2)) : random 수를 2 by 2 행렬로 받게 됩니다.

np.random.normal : 정규분포로 데이터를 추출해냅니다. 평균, 표준 편차, 배열을 차례로 적어주면 됩니다.

  ex) np.random.normal(0, 1, (2, 2)) : 평균이 0 이고, 표준 편차가 1인 정규분포에서 2 by 2 행렬로 뽑아주세요.

np.random.randint

  ex) np.random.randint(0, 10, (2,2)) : 0~10까지 2 by 2 행렬로 출력해주세요~

파이썬 배열만들기 - paisseon baeyeolmandeulgi
파이썬 배열만들기 - paisseon baeyeolmandeulgi

python 을 사용하다보면 원하는 특정 값으로 배열을 초기화 하여 사용하고 싶을 때 가 있다.

이럴때에는 간단히 numpy 모듈의 함수들을 사용하면 된다.

코드는 아래와 같으며 원하는 모양을 (행, 열) 의 순서대로 적어주면 된다. (행렬의 세로, 가로 개수를 말한다.)

1. 0 으로 초기화된 배열 생성하는 법

import numpy as np

# 0으로 초기화 
arr0 = np.zeros((3,6))

2. 1 으로 초기화된 배열 생성하는 법

import numpy as np

# 1로 초기화
arr1 = np.ones((3,6))

3.  원하는 값으로 초기화된 배열 생성하는 법 => () 뒤에 원하는 값을 적어준다.

import numpy as np

# 원하는 값으로 초기화
arr_n = np.full((3,6), 4)
arr_n