나는 톡톡레몬

반응형

이번 포스팅에서는 데이터 분석에 많이 사용되는 numpy 라이브러리를 알아보겠습니다.

 

numpy이란 무엇인가?

 

 

 

우리가 평소에 보는 디스플레이 화면들이나 이미지 들을 데이터화 하면 모두 숫자로 이루어져있습니다. 이런 숫자 데이터들을 연산하고 처리하므로서 비로서 평소에 우리가 보는 일상 이미지가 구현되는 것입니다. numpy 라이브러리는 이런 일련의 숫자 데이터를 쉽고 효율적으로 연산할수 있게끔 만들어둔 하나의 라이브러리입니다.

 

numpy 라이브러리로 배열 만들기

 

 

기본적으로 numpy도 하나의 라이브러리입니다. 쉽게 말하자면 이미 numpy라는 파일안에 여러개의 모듈과 함수들이 구성되어있어 꺼내 쓰면 되는것입니다. 그렇게 때문에 numpy를 구현하기전에 7행처럼 'import' 를 사용하여 numpy 라이브러리를 불러와야합니다. 그리고 numpy 를 매번 쓰기 귀찮으니 'as' 를 사용하여 np로 명명해줍니다.

 

numpy 에서 숫자 데이터를 만드는 방법은 간단합니다. 기본적으로는 np.array([구성하고 싶은 숫자데이터]) 의 형태로 구현해주면 됩니다. 즉 np 라이브러리에서 array라는 모듈을 사용해서 [1,2,3,4,5] 라는 배열 데이터를 만들겠다 라는 의미입니다. 이때 8행의 예시처럼 숫자가 일렬로 이루어진 데이터를 1차원 배열이라고 합니다.

 

numpy 에서는 2차원 배열도 만들 수 있습니다. 10행의 예시가 그 예시인데, 2차원 배열을 만드는 방법은 대괄호를 두번 써주면 됩니다.

 

numpy의 데이터는 단일 타입으로 구성된다!

 

 

앞 포스팅에서 list 자료형을 공부한적이 있는데, list 자료형의 원소는 타입과 무관하게 우리가 원하는 자료형을 원소로 구성할 수 있었습니다. numpy의 경우 데이터이기 때문에 자료형이 섞일 경우, 연산이 서로 안될 경우가 있습니다. 때문에 numpy에서 원소는 모두 한가지 형태로 구성됩니다. 

 

16행에서 기존에 array 를 통해 배열을 만드는 형태에 'dtype=int' 라는 명령어가 추가되었습니다. data type 의 준말로 구성 원소들의 자료형 타입을 int 로 구성해주겠다는 의미입니다. 18행의 경우 b array의 구성원소들 타입을 float 형으로 변경해준다는 명령어입니다.

 

다양한 배열 만들기

 

  

numpy에는 array 명령어를 통해 배열을 만들어주는 것 말고도 다양한 배열을 만드는 명령어들이 있습니다. 24행의 zeros 같은경우는 0으로 이루어진 데이터들을 원하는 수량만큼 만들어주는 함수입니다.

 

25행의 ones 의 경우 구성원소가 1로 이뤄진 배열을 만들어주는 함수입니다. 이때 여지까진 1차원 배열만 예시로 들었는데, 2차원 배열로도 구성할수 있습니다. 2차원 배열로 구성을 하기위해선 앞서 공부한 튜플로 size를 나타내 줘야합니다. 예시처럼 (3,5) 로 size를 명명하면 3행 5열 짜리 배열이 만들어집니다.

 

26행의 arange 의 경우 반복문에서 사용된 range 함수와 비슷한 기능입니다. 앞선 예시와 달리 괄호안에 숫자가 0, 20, 2로 3가지가 구성되는데 숫자 2의 의미는 step으로 원소간 간격을 의미합니다. 원소간의 차이를 2로 구성하여 배열을 만들라는 의미죠. 때문에 26행의 결과값은 [0, 2, 4, 6 --- 20] 으로 구성되게 됩니다.

 

27행의 linspace는 시작과 끝 숫자 사이에 원하는 갯수로 나눠 일정한 간격으로 원소를 구성해주는 함수입니다. 27행의 결과값을 예시로 들자면 [0.0, 0.2, 0.4, 0.6, 0.8, 1.0] 으로 구성됩니다. 괄호 마지막 숫자가 5였기 때문에 원소가 5개로 구성이 되고 그 5개의 원소가 각각 똑같은 간격을 갖게끔 구성됩니다. 이때 가운데 끼는 원소들이 float 자료형으로 구성되기 때문에 시작과 끝 원소도 float 자료형으로 변환되게 됩니다.

 

랜덤숫자로 채워진 배열 만들기

 

 

numpy에서도 random 모듈을 통해 랜덤숫자로 채워진 배열을 만들 수 있습니다. 

 

31행 random 함수는 앞서 알아본것 처럼 랜덤원소를 갖는 (2,2) 사이즈의 배열을 만들라는 의미입니다.

 

32행의 random 모듈의 normal 함수는 정규분포를 표기해주는 함수로 (평균값, 표준편차, 배열 형태 구성을 갖습니다.)

 

33행의 randint 함수는 random + int 의 합성어 정도로 이해하시면 될것같습니다. 즉 int 자료형의 랜덤숫자로 배열을 만들어 주는 함수죠. 구성 형태는 다른 배열과 동일합니다. 

 

이상 numpy에 대해 알아보았습니다. 파이썬 독학에 도움되셨으면 좋겠습니다. 감사합니다. ^_^ 

반응형

이 글을 공유합시다

facebook twitter googleplus kakaostory naver