초이준철
물낌표
초이준철
전체 방문자
오늘
어제
  • 분류 전체보기 (59)
    • Python (6)
    • SQL (37)
    • 경험 (4)
    • Tableau (7)
      • Tableau 기본 (2)
      • Tableau 빅스데이터 22여름 대학생 TWBX (5)
    • 책으로 배우는 공부 (5)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • MYSQL 테이블 구조
  • mysql set
  • mysql 문자열 연결
  • 물낌표
  • MYSQL insert
  • MYSQL 집계함수
  • mysql 문자열 자르기
  • 데이터리안
  • mysql concat
  • 새빨간 거짓말 통계
  • 데벨챌
  • TWBX 과제
  • Mysql ifnull
  • 통계책
  • MYSQL desc
  • 데이터 심리학
  • MYSQL group by
  • TWBX 대학생
  • MYSQL CASE문
  • 데이터 분석 방법

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
초이준철

?!

Python

[Python] list와 Numpy array 차이 (+ numpy array 언제 쓰는가?)

2022. 7. 10. 15:10

오늘의 물낌표

1) Python list와 Numpy array의 차이 세 가지

2) Numpy array는 언제 쓰는가? 

 

첫 번째 Python list와 Numpy array 선언 차이

1) 각 자료형이 다를 때

Python list는 숫자형이나 문자형 여러 가지 자료형을 한 번에 다룰 수 있다.

Numpy array는 한 가지 동일한 자료형이어야 한다. (숫자형 + 문자형 = 모두 문자형으로 전환) 

주의! Numpy array를 사용하기 전에 import numpy as np 선언해주기

# Python list
p_list = [1, 2, 3, 4, '물음표']
# 출력: [1, 2, 3, 4, '물음표']

# numpy array
np.array([1, 2, 3, 4, '물음표'])
# 출력값: array(['1', '2', '3', '4', '물음표']) (문자열로 변형되어 출력된다)

2) 2차원 이상 배열 구조일 때

Python list는 배열의 원소 구조가 달라도 괜찮다.

Numpy array는 배열의 원소 구조가 모두 동일해야 한다.

# Python list
p_list2 = [[1], [2, 3], [4, 5, 6]]
# 출력: [[1], [2, 3], [4, 5, 6]]

# Numpy array
# 배열 원소의 개수가 다를 때 잘못된 값이 출력
np.array([[1], [2, 3], [4, 5, 6]])
# 출력: array([list([1]), list([2, 3]), list([4, 5, 6])], dtype=object)

# 배열 원소의 개수를 동일하게 했을 때 정상적인 값이 출력
np.array([[1, 2], [3, 4], [5, 6]])
# 출력:
# array([[1, 2],
#        [3, 4],
#        [5, 6]])

두 번째 Python list와 Numpy array 연산 차이

Python list 연산은 덧셈일 경우 두 리스트 값이 꼬리를 물어 연결된다.

곱셈일 경우는 두 리스트 사이에는 적용을 못하지만 하나의 리스트에 숫자를 곱해주면 원소가 정수 값으로 복사가 된다.

주의! 리스트에서는 덧셈 , 곱셈를 제외한 다른 연산은 적용되지 않는다.

 

Numpy array은 모든 연산자를 사용할 수 있고, 두 값에서 동일한 위치에 있는 원소별로 연산이 된다. 

array에 어떤 숫자를 연산해주면, 전체 값에 적용된다. (예제 확인)

주의! 두 값을 연산할 때는 array의 원소의 개수가 동일해야 한다.

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

p_list2 = [5, 6, 7, 8]

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

# Python list 곱셈
p_list * p_list2
# 출력: 에러발생

P_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])

세 번째 Python list와 Numpy array 메서드 차이

list 와 array 각각에 활용되는 메서드가 다르기 때문에

list 메서드를 array에 적용해서도 안 되고, array 메서드를 list에 적용해서도 안 된다!

 

중요한 것

Python list는 list.append(), list.pop()를 통해서 자유롭게 원소 변경 및 크기 변경이 가능하다.

반면, numpy array는 만들어지고 나면 메서드를 통해 원소의 update는 가능하지만, array의 크기를 변경할 수는 없다.

* array의 크기란 array.shape 했을 때 확인 할 수 있는 값인데,

예를 들어 array.shape 값이 (3, 4)라면 3행에 4열의 크기를 가지고 있는 array라는 것이다.

 

 

Numpy array는 언제 쓰는가?

Numpy array를 언제 쓰는지를 알기에 앞서 왜 쓰는지를 먼저 알아야 한다.

자유롭게 원소 변경 및 크기 변경이 가능한 list가 동적이기 때문에 정적인 numpy array에 비해 활용도가 높지 않을까라는 생각을 했다.

 

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

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

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

이는 데이터의 크기가 클수록 차이가 커진다.

 

Numpy array의 장점을 통해서 언제 쓰는지를 알 수 있다. 다양한 활용 이유가 있겠지만,

빅데이터 분석 공부를 하고 있는 나에게는 '빅데이터'를 다룰 때 Numpy array의 장점이 크게 발휘한다.

저작자표시
    'Python' 카테고리의 다른 글
    • [Python] 일반함수와 lambda함수 쉽게 알아보기 (feat. map / filter)
    • [Python] Pandas 고유한 값 출력하기 feat. unique(), nunique(), value_counts()
    • [Python] dictionary 기초와 중요 메서드 setdefault(), update(), defaultdict()
    • [Python] 해당 칼럼에서 내가 원하는 문자열 찾아내기 str.contains()
    초이준철
    초이준철
    WNWA

    티스토리툴바