본문 바로가기
Coding/TIL & 배운것들

[Python] list 와 Numpy array의 차이

by 코딩짜는 머글 2024. 10. 10.

리스트 (list)

  • 파이썬에서 기본적으로 제공되는 자료형이다.
  • 다양한 타입의 데이터를 함께 저장할 수 있다. 예를 들어 정수, 문자열, 소수점 등의 다른 데이터 타입을 하나의 리스트에 넣을 수 있다.
  • 크기가 고정되어 있지 않으며 동적으로 요소를 추가하거나 제거할 수 있다.
  • 배열의 원소 구조가 달라도 괜찮다.
  • 덧셈을 할때 두 리스트 값이 꼬리를 물어 연결된다. 곱셈일 경우 두 리스트 사이에는 적용을 못하지만 하나의 리스트에 숫자를 곱해주면 원소가 정수 값으로 복사가 된다. (리스트에서는 덧셈, 곱셈을 제외한 다른 연산은 적용되지 않는다.)

 

 

배열(array)

  • array 모듈 또는 Numpy라이브러리에서 제공된다.
  • 배열은 동일한 타입의 데이터만 저장할 수 있다. 즉, 배열 내 모든 요소는 같은 데이터 타입이어야 한다.
  • 배열은 주로 수치 계산이나 데이터를 효율적으로 저장하고 처리할 때 사용된다.
  • 모든 연산자를 사용할 수 있고, 두 값에서 동일한 위치에 있는 원소별로 연산이 된다. array에 어떤 숫자를 연산해주면, 전체 값에 적용된다. (두 값을 연산할 때는 array의 원소의 개수가 동일해야 한다.)
  • array는 만들어지고 나면 메서드를 통해 원소의 update는 가능하지만 크기를 변경할 수는 없다.

 

연산 차이 예시↓

 
 # list 덧셈
 list = [1, 2, 3, 4]

 list2 = [5, 6, 7, 8]

 list + list2
 # 출력: [1, 2, 3, 4, 5, 6, 7, 8]

 # list 곱셈
 list * list2
 # 출력: 에러발생

 list * 2
 # 출력: [1, 2, 3, 4, 1, 2, 3, 4]

 # Numpy array
 arr1 = np.array([1, 2, 3])
 arr2 = np.array([4, 5, 6])

 arr1 + arr2
 # 출력: array([5, 7, 9])

 arr1 * 2
 # 출력: array([2, 4, 6])
 

 

 

 

차이점 요약

특징 list array
데이터 타입 서로 다른 데이터 타입 가능 같은 데이터 타입만 가능
속도 속도가 느릴 수 있음 속도가 빠름, 특히 수치 계산에서
메모리 효율성 메모리 효율이 낮을 수 있음 메모리 사용이 효율적
사용 예시 일반적인 목적, 다양한 데이터 저장 수치 계산, 대량 데이터 처리
모듈 필요 여부 기본 제공 array 모듈 또는 NumPy 필요

 

 

array는 언제 쓸까?

list에 비해서 비교적 빠른 연산을 지원하고 메모리를 효율적으로 사용할 수 있는 큰 장점을 지니고 있다.

비교적 빠른 연산이 가능한 이유는 원소의 type checking을 할 필요가 없기 때문인데 이는 위에서 알아봤던 데이터 타입이 통일되기 때문이다. 

메모리를 효율적으로 사용할 수 있는 이유는 universal function를 제공하기 때문에 같은 연산 반복에 대해 훨씬 빠르다. 이는 데이터의 크기가 클수록 차이가 커진다.

 

범용함수(universal function) 이란?

Numpy에서는 np.sin, np.cos, np.exp와 같은 친숙한 수학적 함수들을 제공한다. 넘파이에서는 이러한 함수들을 universal function(범용 함수)이라고 부른다. 하나 이상의 스칼라값을 받아서 하나 이상의 스칼라 결과값을 반환하는 간단한 함수를 고속으로 수행할 수 있는 함수이다.

'Coding > TIL & 배운것들' 카테고리의 다른 글

(강의정리) Numpy  (0) 2024.10.11
24-10-10 TIL  (3) 2024.10.10
객체 지향 설계의 5가지 원칙 (S.O.L.I.D)  (4) 2024.10.10
배열 만들기 와 뒤집기  (0) 2024.10.10
map()함수  (0) 2024.10.10