C급 개발자와 함께하는 파이썬
8.7 넘파이(numpy)
빅데이터 또는 딥러닝을 구현하다보면 배열이나 행렬 계산이 많이 나옵니다. numpy 배열 클래스인 numpy.array에는 이러한 기능을 구현하기 편리한 메소드가 많이 포함되어있습니다.
8.7.1 numpy 설치
> pip install numpy
인스톨을 완료하였습니다.
파이썬에서 import numpy해서 오류가 없다면 정상적으로 설치된 것입니다.
8.7.2 numpy 배열 만들기
numpy 배열은 numpy.array()함수를 이용하여 만듭니다. numpy.array()는 파이썬의 리스트를 인수로 받아서 numpy 라이브러리가 제공하는 배열의 형태인 numpy.ndarray형으로 리턴합니다.
a 변수에 numpy.array() 함수를 이용하여 1, 2,3,4 ,5를 할당합니다.
출력해보면 1 2 3 4 5 값과 타입은 numpy.ndarray가 출력되는것을 확인할수 있습니다.
8.7.3 numpy 연산
아래는 numpy.array의 덧셈, 뺄셈, 곱셈, 나눗셈과 같은 연산을 수행하는 예제입니다.
덧셈, 뺄셈, 곱셈, 나눗셈의 값이 정상적으로 출력되는것을 확인할수 있습니다.
8.7.4 numpy의 다차원 배열
numpy는 1차원 배열뿐 아니라 다차원 배열도 지원하고 있습니다.
아래와 같이 2차원 배열을 만들수 있습니다.
a = numpy.array([[1, 2], [3, 4]])
2차원 배열을 만들어서 아래와 같이 출력해 보았습니다.
print( a.shape )
a.shape는 a배열의 각 차원의 크기를 알려주는 정수의 튜플입니다.
print( a.dtype )
모든 numpy배열은 같은 타입 요소의 grid 입니다. numpy는 배열을 구성하는데 사용할 수 있는 숫자 자료타입의 큰 집합을 제공합니다.
위와 같은 결과값이 나옵니다.
8.7.5 다차원 배열 연산
다차원 배열의 연산도 1차원 배열의 연산과 동일한 방법으로 연산을 하고 있습니다.
2차원 배열의 +, X 예제입니다.
위와 같이 결과값이 출력됩니다.
8.7.6 브로드캐스트
일반적으로 우리는 배열을 계산할때 동일한 차원의 배열을 계산합니다. 그런데 numpy에서는 형상(차원)이 다른 배열끼리 계산도 가능합니다. 이러한 기능을 브로드캐스트라고 합니다.
위와 같이 결과가 출력됩니다.
8.7.7 numpy 원소접근
numpy에서 원소의 인덱스는 0부터 시작합니다. 각 원소에 접근하려면 해당하는 인덱스를 입력하면 됩니다.
여느 배열과 같이 작업하면 됩니다. 아래와 같은 결과를 얻을수 있습니다.
8.7.8 원소연산
a = numpy.array([[1, 2], [3, 4], [5, 6], [7, 8]])
print( a > 4 )
a 원소를 모두 비교해서 4보다 큰경우 True를 리턴하고 작은경우 False 를 리턴합니다.
print( len(a > 4) )
a 원소의 값을 모두 비교해서 4보다 큰경우의 원소 갯수를 리턴합니다.
위와같은 결과를 얻을수 있습니다.
이와 같은 방법을 이용하여 다양한 종류의 특정 조건을 만족하는 원소를 얻는데 유용한 기능입니다.
8.99 요약
이번장에서는 문자열, 튜플, 맵, 집합등의 자료구조에 필요한 내용들을 배웠습니다. 지금은 어렵고 이해 안되는 부분들이 있지만 의문나는 점이 있으면 꼭 손으로 쳐서 결과를 확인하시기 바랍니다.
“백문이 불여일견, 백견이 불여일타”라는 말이 있습니다. 백번읽어도 한번 보는게 낫고 백번 보아도 한번 타이필하는게 낫다는 의미입니다. 꼭 코딩은 본인의 손으로 쳐서 결과를 확인하는 습관을 들이는것이 좋습니다.