파이썬의 지향점은 '간단한 코딩' 이다. 하지만 list만으로 데이터를 정제하기에는 무리가 있고, 이러한 요구사항을 충족하기 위해 numpy나 pandas같은 라이브러리들이 존재한다.

numpy에 대해 알아보자.

 

● Numpy란?

출처 : https://numpy.org/

까마득한 고등학생 시절 배웠던 배열을 구현하기 위한(편한) 라이브러리

기존 파이썬의 리스트는 for문을 통해 계산하는것과 같이 복잡한 과정이 필요했지만, numpy 활용으로 인해 리스트끼리의 간단한 계산이 가능하다.

 

import numpy as np

 

로 불러올 수 있고 배열간의 직접 계산이 가능하다.

 

a = np.array([1, 2, 3, 0, 0])
print(a)
>> array([1, 2, 3, 0, 0])


b = np.arange(4) 
print(b)
>> array([0, 1, 2, 3, 4])

c = a + b
print(c)
>> array([1, 3, 5, 3, 4])

 

이는 배열을 직접 지정하여 바로 계산하는 모습.

일반 list 형태였다면 for문을 통해 list n번째의 값을 꺼내서 각자 더해야하지만, numpy 덕분에 직접적인 계산이 가능하다.

 

- 어떻게 배열 형태를 출력 가능한지 확인하자.

a = np.array([['a','b','c'],['d','e','f'],['g','h','i']])

a[0,1]
>> 'b'


a[:,[0,1]]
>> array([['a', 'b'],
       ['d', 'e'],
       ['g', 'h']], dtype='<U1')


a[[0,1,2],[0,1,0]]
>> array(['a', 'e', 'g'], dtype='<U1')

첫 줄에서 선언한 a의 경우, 

[[ a, b, c],

[ d, e, f],

[ g, h, i]]

의 형태를 하고 있을 것이다.

 

a안의 요소를 검색하고 싶은 경우,

[[ 0,1,2],

[ 0,1,2],

[ 0,1,2]]

와 같이 검색이 가능하다.

 

검색 순서는 [axis = 0, axis = 1]의 조건이다.

* axis = 0 은 행 순서 기준, axis = 1 은 열 순서 기준 *

 

- numpy 팁

np.array([리스트]) = 파이썬에서 만들어준 리스트를 numpy배열로 만든다.

이때 만들어준 np[ ]안에는 조건문도 들어갈 수 있다. np에서 true인 경우에 출력도 가능하니 true, false인 경우에는 출력도 가능.

 

np.ndim(‘배열이름’) = 배열의 차원을 확인한다. (number dimension)     

 

a.shape = 배열 형태를 확인한다.(차원 개수만큼 수를 적용하여 튜플로 표시한다.)

 

a.dtype = 요소들의 자료형을 확인한다.(dimension type)

 

a.reshape(a,b) = 다른 형태의 배열로 바꾼다.

ex) np.array([[1,2,3],[4,5,6]])(2,3) 형태에서 = 배열로 칸이 줄어들어 수가 없어지는 경우는 불가.

    np.reshape(3,2)(3,2)의 형태 변환 가능, np.reshape(6,1)(6,1)의 변환 가능.    

    reshape(a,-1) 지정하면 현재 array의 최대 개수가 몇개인지 몰라도 끝번호에 맞춰줘서 변환이 용이하다.

 

 

 

numpy 조사를 하며 위키백과를 살짝 들여다보니 선형대 수학, 최근접 이웃 과 같은 아직 보기 힘든 자료들이 여럿 있었다. 언젠간 나도..!

+ Recent posts