오늘은 데이터 분석을 하다 리스트와 넘파이의 차이에 대해 궁금해서 비교를 했다.

 

오늘의 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는 수치 데이터를 빠르고 효율적으로 처리할 수 있어 데이터 분석 및 과학 계산에 더 적합하다.

+ Recent posts