본문 바로가기
개발 지식

[Python] list와 Numpy array 비교

by youuuu_h 2024. 7. 24.
  • list와 Numpy array의 차이점
  • list와 Numpy array의 메서드 비교
  • Numpy 고유 메서드 및 기능 

1. list와 Numpy array의 차이점 

 

1. Python list와 Numpy array 선언 차이

  • list: list는 다양한 데이터 타입의 원소를 동시에 포함할 수 있다. 
    즉 숫자형이나 문자형 여러 가지 자료형을 한 번에 다룰 수 있다. 
  • np array: 하나의 Numpy 배열은 동일한 데이터 타입만을 포함할 수 있다.
    숫자형 + 문자형 = 모두 문자형으로 변환

2. 연산

  • list: 기본적인 연산은 리스트의 확장이나 반복에 관련된 것 이다. 원소별 연산은 지원되지 않는다.
    덧셈의 경우, 두 리스트의 값이 꼬리를 물어 연결된다.
    곱셈일 경우, 하나의 리스트에 숫자를 곱해 원소의 값을 변경할 수 있다. 
  • np.array: 배열 간의 연산은 원소별로 수행된다.
    예를 들어 두 array를 덧셈할 경우, array의 원소끼리의 합이 출력 된다.(두 array의 원소 개수가 동일해야함)

3. 크기 

  • list: list.append(), list.pop() 을 통해서 동적으로 크기를 확장하거나 축소할 수 있다.
  • np.array: 생성 후 메서드를 통해 원소의 update는 가능하지만, array의 크기를 변경할 수 없다.
    (array의 크기란? array.shape()를 했을때 출력되는 (a,b)와 같은 array의 크기, a행 b열)

4. 기능과 메서드

  • list: 기본적인 추가, 삭제, 슬라이싱 등의 연산만 지원한다.
  • np.array: 선형 대수, 통계, 수학 함수 등 다양한 고급 연산과 메서드를 지원한다. 

5. 효율성

  • list: list는 다양한 타입의 객체를 저장할 수 있지만, 이로 인해 메모리 사용이 np.array에 비해 덜 효율적이며 일반적인 연산에서 Numpy 배열보다 느릴 수 있다.
  • np.array: Numpy 배열은 고정된 타입의 데이터를 저장할 수 있어 메모리 사용이 효율적이며, 내부적으로 c로 구현된 연산들로 인해 계산이 빠르다. 

6. 장단점 정리

  • list
    장점: 자유롭게 원소 변경 및 크기 변경이 가능한 동적인 타입
    단점: 메모리 사용이 Numpy배열에 비해 비효율적이며 연산 속도가 비교적 느림
  • np.array
    장점: 메모리 사용에 효율적이며 연산 속도가 빠름 
    단점: numpy 배열 생성 후 크기를 변경할 수 없는 정적인 타입

2. list와 Numpy array의 메서드 비교 

 

메서드 list numpy array
요소 추가 및 삽입 lst.append(): 리스트의 끝에 요소 삽입 np.append(array명, 값):
numpy 배열은 고정된 크기를 가지므로 직접 요소 추가는 불가능, 대신 새로운 배열을 반환
lst.insert(위치, 값): 특정 위치에 요소 삽입
요소 삭제 lst.remove(): 특정 값을 가진 첫 번째 요소 삭제 np.delete(array명, 값):
특정 위치에 있는 요소를 삭제하고 새로운 배열을 반환
lst.pop(): 특정 위치에 있는 요소를 삭제하고 반환
요소 검색 lst.index(): 특정 값의 첫 번째 위치 반환 np.where(조건): 특정 조건을 만족하는 요소의 인덱스 반환
lst.count(): 특정 값의 개수 반환 np.count_nonzero(조건): 특정 조건을 만족하는 요소의 개수 반환 
요소 정렬 lst.sort(): 리스트를 제자리에서 정렬 np.sort(arr):배열을 정렬하여 새로운 배열로 반환
sorted(lst): 정렬된 새로운 리스트 반환
요소 합산 sum(lst): 요소의 합 계산 np.sum(arr): 요소의 합 계산

 

 


3. Numpy 고유 메서드 및 기능 

1. 배열 생성 및 조작

  • np.arrange(start, stop, step): 지정된 범위 내에서 균등 간격의 숫자 배열 생성 
  • np.reshape(arr, (row, column)): 배열의 형태 변경 (또는 arr.reshape(row,column) )
  • np.transpose(arr): 배열의 전치(행과 열 바꾸기)
  • np.concatenate(arr1, arr2): 배열 결합

2. 논리 연산 및 조건

  • np.all(arr): 모든 요소가 참인지 검사
  • np.any(arr): 하나라도 참인지 검사 

3. 기타 

  • np.unique(arr): 배열에서 중복된 요소 제거하고 유일한 값 반환
    return_counts=True: 각 고유 요소의 등장 횟수 반환하는 추가 옵션 가능  
  • np.cumsum(arr): 누적 합 계산 
  • np.diff(arr): 연속적인 요소 간의 차이 계산