컴퓨터/Python
NumPy는 효과적으로 Python에서 데이터를 효과적으로 다룰 수 있게 해 주는 라이브러리입니다.
다시 말해서, 데이터를 효과적으로 다룰 수 있는 데이터 구조를 가지고 있습니다.
본문은 NumPy에서 데이터를 효과적으로 다룰 수 있도록 만든 NumPy의 데이터구조 NdArray가 어떻게 생겨먹었는지 알아보고, 이해하는 시간을 가져보도록 합시다.
NdArray의 주요 특징들을 이해한다면 NumPy를 이용하여 데이터를 다루는데 조금 더 쉽게 익숙해질 수 있습니다.
NumPy에서 제공하는 데이터 구조입니다. N차원의 배열의 형태로 자료를 표현하기 때문에 NdArray라고 부릅니다.
즉 NdArray는 어떠한 데이터를 N차원의 데이터로 표현하고 있습니다.
그리고, 이 NdArray의 대표적인 특징(속성)은 다음과 같습니다.
이러한 특징들 때문에 벡터화 빠르고 간편한 수학적인 연산을 가능하게 합니다.
어떻게 간편한 수학적인 연산을 하고있는지 간단한 예제 몇 개로 알아보도록 합시다.
만약 1,2,3,4,5의 5개 원소를 가진 List와 NdArray에 모든 원소에 곱하기 2를 하고 싶다.
import numpy as np
# Python List
list = [1,2,3,4,5]
#아래 코드 실행 시 의도한대로 나오지 않음.
print(list * 2) #[1,2,3,4,5,1,2,3,4,5]
#For문을 통해 가능하다.
for i in range(len(list)):
list[i] = list[i] * 2
print(list) #[2,4,6,8,10]
# NumPy NdArray
ndarray = np.array([1,2,3,4,5])
#간단하게 연산이 가능하다.
ndarray = ndarray * 2
print(ndarray) # [2,4,6,8,10]
list를 사용하면 for문을 이용해야 원하는 결과를 얻을 수 있습니다. 하지만 Numpy를 사용하면 아주 손쉽게 계산이 가능합니다.
만약 2개의 배열 [1,2,3,4,5] 와 [10,20,30,40,50]의 값을 더하여 새로운 배열을 List와 NdArray로 만들어보세요.
# Python List
list_A = [1,2,3,4,5]
list_B = [10,20,30,40,50]
list_C = list_A + list_B
#아래 코드 실행 시 의도한대로 나오지 않음.
print(list_C) #[1, 2, 3, 4, 5, 10, 20, 30, 40, 50]
list_C = []
#For문을 통해 가능하다.
for i in range(len(list_A)):
list_C.append(list_A[i] + list_B[i])
print(list_C) #[11, 22, 33, 44, 55]
# NumPy NdArray
ndarray_A = np.array([1,2,3,4,5])
ndarray_B = np.array([10,20,30,40,50])
#간단하게 연산이 가능하다.
ndarray_C = ndarray_A + ndarray_B
print(ndarray_C) # [11 22 33 44 55]
예제 1과 유사하게 배열과 배열끼리의 연산또한 아주 쉽습니다.
예제 1과 예제 2만 보고는 편리함을 못 느낄 수 있을 것 같아 다음과 같은 예제를 한번 풀어보도록 합시다.
이번 예제는 NdArray로만 작성하겠습니다. (직접 list로 구현해 보고 차이점을 느껴보세요.)
2개의 배열 [1,2,3]과 [4,5,6]이 있습니다.
두 배열을 더하고 뺀 결과 배열 두개를 만듭니다.
만들어진 배열 2개를 이용해서 곱하기와 나누기를 하여 새로운 2개의 배열을 만듭니다.
import numpy as np
# NdArray 생성
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
# 사칙연산 수행
c = a + b # 덧셈
d = a - b # 뺄셈
# 다시 연산
e = c * d # c와 d를 곱셈하여 새로운 NdArray 생성
f = e / d # e와 d를 나눗셈하여 새로운 NdArray 생성
print(e) # 출력: [-15 -28 -45]
print(f) # 출력: [-5. -5. -5.]
직접 list를 이용해서 예제의 결과를 구해보고 차이점을 느껴보세요.
이렇게 강력하고 편리한 NumPy 알아두면 도움이 될까요? 안될까요?
Python - Numpy를 배우기 전 ( 정의, 사용하는 이유 ) (0) | 2023.02.08 |
---|---|
Python - 파이썬과 아나콘다 그리고 가상환경 (0) | 2022.11.09 |
Python - [크롤링 실습]seleniu으로 번개장터 조회하기5 (몇가지 질의 해보기) (0) | 2022.08.17 |
Python -[Pandas] 조건 검색하기 (query함수) (0) | 2022.08.13 |
Python - [크롤링 실습] selenium으로 번개장터 조회하기 4 (엑셀로 출력 및 데이터 조회하기) (0) | 2022.08.03 |
91년생 공학엔지니어의 개발일지
TODAY :
YESTER DAY :
TOTAL :
Commnet