파이썬/파이썬 심화

[파이썬 심화] 1-1. NumPy 배열

  • -
반응형

NumPy 패키지란?

  • 수치해석용 파이썬 패키지
  • 벡터, 행렬 등 선형대수로 주로 사용
  • 내부 반복문이 C로 구현되어 있어 파이썬에 비해 속도가 빠름
  • 관례적으로 np로 import(즉, import numpy as np)

배열 

1. 사용 방법

import numpy as np

arr = np.array([0,1,2,3,4])

print(arr) # [0 1 2 3 4]
print(type(arr)) # <class 'numpy.ndarray'> n-차원 배열(n-dimensional array)
  • 리스트와 차이점

        - 모든 원소가 같은 자료형이어야 함.

        - 원소의 개수를 바꿀 수 없음

        - 벡터화 연산을 수행

 

  • 리스트에 비해 제약이 많으나, 이로 인해 실행 속도가 빠름

 

벡터화 연산

  • 데이터를 모두 2배 해야하는 경우 (배열 안에 있는 수 하나하나 2배 해야하는 경우)

    - 배열

arr = np.array([0,1,2,3,4])
arr = arr*2
print(arr) # [0 2 4 6 8]

- 리스트

num = [0,1,2,3,4]

result = []
for i in num:
	result.append(2*i)
    
print(result) # [0, 2, 4, 6, 8]

- 배열 같이 리스트에 적용하면 ?

num = [0,1,2,3,4]
num = num * 2

print(num) # [0, 1, 2, 3, 4, 0, 1, 2, 3, 4]

결론 : 배열의 경우 반복문을 사용할 필요가 없어서 계산 속도가 빠르다.

 

  • 사칙연산, 비교 연산, 논리 연산 모두 적용 가능!
a = np.array([0,1,2])
b = np.array([3,4,5])

print(2*a+b) # [3 6 9]
print(a==2) # [False False True]
print((a==1) & (b>3)) # [False True False]

두 배열의 길이가 다르면 오류

a = np.array([0,1,2])
b = np.array([2,4,6,8])

print(a+b) # 에러 !!

 

 

n차원 배열

    - 2차원, 3차원 등 n차원의 배열 구조를 지원한다.

na = np.array([[0,1,2],[3,4,5]])

print(na)

'''
결과 ( 2개의 행(Row)과 3개의 열(Column) )
[[0 1 2]
 [3 4 5]]
'''

    - 행, 열의 개수 출력

na = np.array([[0,1,2],[3,4,5]])

print(len(na)) # 행의 개수 : 2
print(len(na[0])) # 열의 개수 : 3

    - 행마다 길이(열의 갯수)가 다르면 오류

na = np.array([[0,1,2],[3,4,5,6]]) # 오류 !!

3차원 배열

nb = np.array([[[1,2,3,4],[5,6,7,8],[9,10,11,12]],
				[[13,14,15,16],[17,18,19,20],[21,22,23,24]]])

print(nb) # 2*3*4 배열
'''
결과
[[[ 1 2 3 4]
  [ 5 6 7 8]
  [ 9 10 11 12]]
  
 [[ 13 14 15 16]
  [ 17 18 19 20]
  [ 21 22 23 24]]]
'''

    - 배열의 차원과 크기 ( ndim, shape )

na = np.array([[0,1,2],[3,4,5]])

print(na.ndim) # 차원 : 2
print(na.shape) # 크기 : (2,3)

nb = np.array([[[1,2,3,4],[5,6,7,8],[9,10,11,12]],
				[[13,14,15,16],[17,18,19,20],[21,22,23,24]]])
                
print(nb.ndim) # 차원 : 3
print(nb.shape) # 크기 : (2,3,4)

 

자료: 데이터 사이언스 스쿨 (https://datascienceschool.net/intro.html)

반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 구독, 공감 부탁드립니다.