Python - Numpy를 배우기 전 ( 정의, 사용하는 이유 )

컴퓨터/Python

728x90
반응형

Numpy란 무엇인가?

파이썬을 통해서 데이터 분석, 머신러닝, 딥러닝 등을 개발하는 프로그램을 만들게 되면 필연적으로 NumPy라는 라이브러리를 마주하게 됩니다.  이 NumPy(넘파이)라는 녀석은 도대체 무엇일까요? 

 

데이터 분석, 또는 머신러닝, 딥러닝 등을 응용, 구현하는 많은 프로그램들은 전반적으로 "엄청나게 많은 데이터를 처리"하는 과정이 필수적으로 존재합니다.  그리고 이 NumPy는 "엄청나게 많은 데이터"를 컴퓨터와 파이썬언어에서 효율적으로 사용할 수 있게 도와주는 라이브러리입니다.

 

즉, NumPy는 프로그램에서 필요한 데이터들을 구조화하고, 계산을 할 수 있게 구현된 라이브러리입니다.

 

Numpy의 장점과 특징

NumPy가 무엇인지 대략적으로 이해가 되고 있으신가요?

조금 더 기능적인 부분을 정리하자면 다음과 같습니다.

  • N차원 배열의 손쉬운 사용이 가능
  • 생성된 N차원 배열의 연산이 쉬움
  • 다양한 라이브러리에서 호환이 됨
  • 오픈소스 라이브러리러 무료
  • 최적화된 C코드 라이브러리로 속도가 빠르다.

Numpy는 위와 같은 이유로 파이썬을 통해 데이터를 다룬다면 가히 필수로 알아야 하는 라이브러리 중 하나입니다.

 

Numpy를 사용하지 않는다면?

파이썬의 기초적인 문법들을 배우고 나서 처음 Numpy를 접한다면 이런 생각을 할 수 있습니다.

"아니.. 파이썬의 기본 라이브러리만 있어도 데이터를 저장하고 계산할 수 있는 거 아님? 왜 Numpy를 써야 하지?"라고 말이죠.

물론 틀린 말은 아닙니다. 충분히 파이썬에서 제공되는 기본패키지들과 문법만을 이용해도 데이터를 저장하고 계산을 할 수 있습니다. 하지만 크게 2가지 불편한 점이 느껴질 가능성이 큽니다.

 

  1. 속도가 차이가 난다.
    작은 데이터를 가지고 이용한다면 큰 문제가 발생하지 않습니다. 하지만 데이터의 양이 많아진다면 기본패기지의 List와는 엄청난 차이를 체감할 수 있습니다.
    검색을 해보면 다양한 이유가 많이 있습니다. 사용하는 데는 알 필요가 없기 때문에 서술하지 않겠습니다.
  2. Numpy를 이용하는 라이브러리를 사용하기 힘들다.
    만약 엄청난 본인이 엄청난 천재여서 Numpy에 버금가는 데이터를 다루기 위한 구조 및 툴을 완성했다고 가정합시다.
    아무리 천재라도 만드는 과정에 시간이 소요될 것은 분명하며, 이미 1번 등의 이유로 파이썬에서는 Numpy를 이용하여 데이터를 많이 다루게 되었습니다. 따라서 다양한 라이브러리 또한 데이터들을 Numpy에서 제공되는 형태로 사용하고 있습니다. 때문에 다른 라이브러리들을 추가로 이용하기 위해서도 Numpy는 필수적입니다.

Numpy를 공부하시다가 왜 필요한지 현타가 온다면 방금 위에 2가지 부분을 반드시 기억하고 파이팅 하시길 기원합니다.

 

Numpy에서 뭘 배울 건데?

앞으로 필자 또는 독자가 Numpy를 이용해서 어떤 프로그램을 개발할지는 아무도 모릅니다. 하지만 파이썬으로 데이터를 다루는 분야에서는 Numpy는 필수적인 존재입니다. 따라서 앞으로 Numpy 라이브러리의 모든 기능과 구조를 기억하고 사용하는 것이 아닌 Numpy의 구조적 특징과 다양한 기능들이 있다는 것을 익히는 것을 주목적으로 공부를 했으면 좋겠습니다. 

결국에는 다음과 같은 부분들이 Numpy를 배우면서 기억해야 될 부분이라고 생각됩니다.

  • Numpy를 통한 배열(Array)에 대한 이해
  • 배열의 생성과 추가, 삭제, 정렬
  • 생성된 배열의 특정과 정보
  • 배열에서의 요소의 탐색
  • 배열들에 저장된 데이터들의 계산 방법

Numpy를 능숙하게 다루려면 위의 개념이 머릿속에 들어있으면 좋을 것 같습니다.  그리고 대략적인 기억만 하면 손쉽게 인터넷을 통해 기능을 사용할 수 있으니까요.

 

앞으로 Numpy를 파이썬에서 어떻게 다루는지 차근차근 알아보도록 하겠습니다.

 

728x90
반응형

Commnet

G91개발일지

Gon91(지구일)

91년생 공학엔지니어의 개발일지

TODAY :

YESTER DAY :

TOTAL :