파이썬 데이터분석 실무 강좌의 맛보기 강의입니다.
파이썬의 데이터 분석 패키지 중에 NumPy에 대해서 설명해 보겠습니다. NumPy는 Numerical Python이라고 얘기를 하고요. 파이썬에서 과학적 계산을 위한 핵심 라이브러리예요. 두 가지 굉장히 중요한 점이 있는데요. 하나는 다차원 배열을 지원하고 있어요. ndarray라고 해서 저희가 살펴볼 거고요. 그리고 ndarray를 통해서 벡터 행렬 연산을 지원하기 때문에 선형 대수 계산에서 굉장히 빠른 속도를 가지고 있고요. 이런 속도는 순수 파이썬에 비하면 압도적으로 굉장히 빠르다는 장점을 갖고 있습니다. 저희가 파이썬의 리스트하고 NumPy의 어레이를 자주 비교를 하거든요. 한번 비교를 해보면 파이썬 리스트 기억나시죠? 대괄호로 시작해서 대괄호로 끝나고 여러 개의 원소가 있을 수 있는데 원소들이 하나는 스트링, 하나는 인티저, 또 플로트 이렇게 다양한 데이터 타입으로 섞여질 수 있는 게 파이썬 리스트였어요. 그런데 NumPy Array는 동일 타입의 원소만 주로 취급을 하죠. 다시 말하면 Integer는 Integer끼리, 그 다음에 Float은 Float끼리, 그 다음에 Boolean, 다시 말해 True/False 있는 논리용은 논리용끼리 뭐 이렇게 동일 타입의 원소로만 구성돼야 돼요. 그렇지 않고 서로 다른 데이터 타입으로 원소를 구성하게 되면 NumPy Array가 Array를 만들 수가 없습니다. 또 두 번째는 파이썬은 메모리 용량이 크고요 속도가 굉장히 느린 반면에 NumPy Array는 같은 데이터 타입을 또 갖고 있고 그래서 메모리가 최적화되고요. 계산 속도가 굉장히 향상된 그런 패키지이고요. 그 다음에 파이썬 리스트는 Nesting, 중첩이 가능해요. 그래서 중첩이 가능하다는 얘기죠. 그러나 NumPy Array는 크기를 좀 명확하게 정의해요. 디멘전을. 그래서 크기를 명확하게 정의해서 사용하셔야 되고요. 그 다음 파이썬 리스트는 전체 리스트가 연산이 불가했잖아요. 저희가 파이썬 리스트에서 더하기하고 곱하기 연산자 기억나시나요? 더하기 연산자는 어떻게 했냐면 연결해줬어요. 원소를 서로 더해서 값을 만들어내는 게 아니고 바로 문자열처럼 바로 연결만 시켜줬죠. 곱하기 연산자도 사실은 원소끼리 값이 곱해진 게 아니었고요. 어떻게 했냐면 예를 들면 이런 거였죠. 이렇게 해서 3번 반복해줘 이런 식으로 해서 마치 문자열처럼 반복의 기능만 가졌어요. 그래서 예를 들면 1, 2가 들어갔다 이것을 3번 반복하라 그러면 1, 2, 1, 2, 1, 2 이렇게 해서 3번이 나오는 형태가 됐었어요. 그래서 연산이 불가했지만 NumPy는 기본적으로 전체 연산이 가능해요. 그래서 우리가 저희가 리스트 제가 설명 드릴 때 더하기 곱하기를 설명 드릴 때 실제 계산은 NumPy를 통해서 합니다 라고 말씀을 드렸죠. 그래서 실제 연산이 가능하게 NumPy Array를 통해서 저희가 연산을 하고 있습니다. NumPy의 배열에 대해서 살펴보겠습니다. NumPy Array는 모든 원소가 반드시 같은 데이터 타입이어야만 해요. 다른 데이터 타입이면 배열로 만들 수 없고요. 같은 데이터 타입이라는 것은 Integer는 Integer끼리, Float은 Float끼리, 그 다음에 Boolean 타입은 Boolean 타입끼리 이렇게 묶여져 있어야 배열로 만들 수 있다는 얘기고요. ndarray의 약자는 n차원 Dimension Array예요. 그래서 n차원 배열을 지원하고 있는데요. 저희가 1차원부터 3차원 배열까지 지금 만들어 봤어요. 그래서 1차원 배열을 저희가 다른 말로 벡터라 합니다. 그러면 숫자 하나에 있는 7 이런 건 뭐라 그럴까요? Scalar라고 그러죠. Scalar. 그래서 Scalar가 모여서 저희가 벡터가 되는 거죠. 1차원 배열을 벡터라고 부릅니다. 가로와 세로가 모여진 우리가 말하는 매트릭스, 네모난 형태의 행과 열이 있는 거죠. 여기가 행이 되고 우리식으로 얘기하면 여기가 열이 되는 구조를 갖고 있는 거. Axis 0은 행이에요. 1행 2행이 되는 거고 열은 1열 2열 3열이 되는 거예요. 행과 열의 순서를 헷갈리시면 절대 안 되고요. 행은 가로예요. 가로, 열은 세로입니다. 2행 3열짜리 이렇게 배열을 만드는데 이 배열을 저희가 행렬, 매트릭스라고 불러요. 다른 이름으로. 그리고 3차원은 행과 열이 있는데 여기 보시면 하나, 둘, 셋, 넷, 4행이죠. 그 다음에 하나, 둘, 셋, 4행, 3열인데 이게 이제 두 개를 갖고 있는 거죠. 이렇게 1층, 2층 이렇게 여기서 이거는 저희가 세 개의 축을 갖고 있고요. 세 개의 축이 하나, 둘, 셋, 세 개의 축을 갖고 있다는 걸 확인할 수가 있습니다. 그래서 저희가 이렇게 얘기를 하는 거고요. 이 3차원 배열을 저희가 여기서부터는 딥러닝에서 저희가 얘기를 할 때 텐서라 불러요. 여기서부터는 본격적으로 딥러닝하는 기본적인 자료구조가 되는 거죠. 라고 생각을 하시면 됩니다. 배열이라고 생각하시면 되겠고요. Numpy는 이렇게 해서 1차원, 2차원, 3차원인데 용어 정의는 잠깐 다시 한번 정리를 해드릴게요. 원소가 하나 있는 건 스칼라. 스칼라를 모아서 한 줄짜리 만드는 것을 벡터, 1차원 배열이고요. 우리가 요걸 또 모아서 뭘 만드냐 행과 열을 잇는 2차원 배열 매트릭스를 만들고요 3차원 이상의 텐서를 저희가 만들어서 사용하게 되는 겁니다 Numpy는 기본적으로 외부 모듈이에요 다시 말하면 서드 파티 모듈이거든요 실제적으로 파이썬이 만든 모듈이 아니에요 라이브러리 아니기 때문에 반드시 소스 코드를 까셔야 돼요 그래서 까는 방법은 저희가 윈도우 CMD 창에 내려가셔서 커맨드 라인 창에 가셔서 하나 여시고 pip install numpy라고 깔아셔야 이 모듈을 사용할 수 있어요. 깐 다음에 저희가 모듈을 가져오는 방법은 import였죠. import numpy라고 쓰고요. 보통은 저희가 as라고 해서 np라고 해서 좀 줄여서 써요. 그래서 numpy는 관습적으로 저희가 np로 줄여서 사용하고 있습니다. 그리고 numpy에 관한 튜토리얼이 있는데요. 여기 사이트에 가보시면 Numpy의 사용법이랄지 아주 친절한 도큐먼트들이 있기 때문에 한번 방문해 주셔서 반드시 읽어보시면 좋겠습니다.
