오늘은 데이터 분석을 하다 리스트와 넘파이의 차이에 대해 궁금해서 비교를 했다.
오늘의 TIL: 리스트와 넘파이의 차이
1. Python 리스트
- Python의 기본 자료형. 다양한 자료형을 저장할 수 있다.
- 동적 크기를 가지며, 각 요소는 포인터로 관리된다.
- 벡터 연산을 지원하지 않아, 연산 시 반복문을 사용해야 한다.
예제: 리스트 연산
# Python 리스트에서 두 리스트의 요소를 더하기
list_a = [1, 2, 3]
list_b = [4, 5, 6]
# 요소별 합을 구하기 위해 반복문 사용
result = [a + b for a, b in zip(list_a, list_b)]
print("리스트 결과:", result) # 출력: [5, 7, 9]
2. NumPy 배열
- 숫자 데이터를 빠르게 처리하기 위해 설계된 라이브러리.
- 배열 크기가 고정되어 있으며, 모든 요소는 동일한 데이터 타입을 가진다.
- 벡터화 연산을 지원해 반복문 없이 효율적으로 계산 가능하다.
예제: NumPy 배열 연산
import numpy as np
# NumPy 배열에서 두 배열의 요소를 더하기
array_a = np.array([1, 2, 3])
array_b = np.array([4, 5, 6])
# 벡터화 연산 사용
result = array_a + array_b
print("넘파이 결과:", result) # 출력: [5 7 9]
3. 주요 차이점
특징 리스트 NumPy 배열
| 데이터 타입 | 서로 다른 타입 가능 | 동일한 타입 필요 |
| 연산 | 반복문 사용 필요 | 벡터화 연산 지원 |
| 속도 | 상대적으로 느림 | 빠름 |
| 메모리 사용 | 각 요소가 포인터로 관리되어 더 큼 | 고정 크기로 메모리 효율적 사용 |
| 라이브러리 필요 여부 | 기본 제공 | NumPy 설치 필요 |
4. 한눈에 보기
# 리스트와 NumPy의 연산 속도 비교
import numpy as np
import time
# 리스트
list_data = list(range(1, 1000001))
start_time = time.time()
list_result = [x * 2 for x in list_data]
print("리스트 연산 시간:", time.time() - start_time)
# NumPy
np_data = np.array(list_data)
start_time = time.time()
np_result = np_data * 2
print("넘파이 연산 시간:", time.time() - start_time)
NumPy는 대용량 데이터를 다룰 때 훨씬 빠르다는 것을 확인할 수 있다.
오늘 배운 내용을 요약하면 리스트는 다양한 데이터 타입과 동적 크기를 지원하며 일반적인 작업에 적합하지만, NumPy는 수치 데이터를 빠르고 효율적으로 처리할 수 있어 데이터 분석 및 과학 계산에 더 적합하다.
'내일배움캠프 TIL' 카테고리의 다른 글
| 2024.12.18TIL (1) | 2024.12.18 |
|---|---|
| 2024.12.17 TIL 그래프 시각화 (0) | 2024.12.17 |
| 2024.12.13 TIL - SQL : COALESCE (2) | 2024.12.13 |
| 2024.12.11 TIL - 알고리즘 문제풀이 (1) | 2024.12.11 |
| 2024.12.10 TIL - 인공지능을 위한 수학(2). (1) | 2024.12.10 |