본문 바로가기

Programming/Data mining

3. Numpy 기초

Coursera.org 에서 Michigan University의 Applied Data Science with Python의 강의를 토대로 정리한 내용입니다.

오늘은 Numpy라는 파이썬을 활용한 데이터마이닝에셔 결코 빠질 수 없는 아주 기본적인 라이브러리에 대해서 알아보도록 할게요.

import numpy as np #이런식으로 라이브러리를 불러오면 된답니다.

mylist = [1, 2, 3]
x = np.array(mylist)

# x가 array([1, 2, 3])와 같은 형식으로 저장이 됩니다.

m = np.array([[7, 8, 9], [10, 11, 12]])

#array([[ 7,  8,  9],
#       [10, 11, 12]]) 와 같은 형식으로 저장이 됩니다.

m.shape

# (2,3)이 출력이 되겠죠?

n = np.arange(0, 30, 2) #이런식으로 일정의 규칙을 우리가 만들어 데이터를 생성할 수도 있습니다.

# array([ 0,  2,  4,  6,  8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28]) 이 될 것 같네요!

 

이 외에도 Numpy가 지원하는 수많은 기능들이 있는데요. 이는 공식 documentation 이나 구글링을 통해서 알아보실 수 있구요.
위에 간단하게 보인 특성에서도 드러나듯이 Numpy는 행렬이나 일반적으로 대규모차원의 데이터를 다루는 데 매우 유용하답니다.

뿐만 아니라 Numpy는 다양한 수학적인 함수들을 제공하고 있어요.
.sum() .max() .mean() .median() .std() 다 어떤 함수들일 지 예상이 가시죠?
.argmax()나 .argmin()은 각각 최댓값과 최솟갓의 index를 리턴한답니다.

Numpy를 활용하면서 주의해야하는 것 중 하나는 copy() 기능이에요.
아래의 설명을 참고하세요 :)

r = np.arange(36)
r.resize((6, 6))

#위의 코드를 통해 r은 1부터 36까지 6*6행렬로 나타나게 된답니다.

r2 = r[:3,:3] # 이 중 3행과 3열까지 3*3행렬을 r2에 할당한 후,
r2[:] = 0 #을 통해 모든 값들을 0으로 바꾼다면 r2는 당연히 np.zeros((3*3))과 같이 3*3 0행렬이 되죠.

#그런데 주의해야할 점은 이러한 설정이후 
print(r) #을 해보면 r 역시 3행 3열까지 0으로 바뀌어있다는 것을 알 수 있습니다.

#이를 통해 numpy에서의 =을 활용한 할당은 copy가 아닌 주소복사가 일어난 다는 것을 알 수 있는데요.
#이를 예방하기 위해서는

r_copy = r.copy() #와 같이 .copy()를 활용하여 값을 복사하면 된답니다.