넘파이

파이썬・ML/numpy

넘파이 브로드캐스팅(broadcasting) 이해하기

직전 포스팅에서 넘파이 배열의 원소별 연산(Element-wise operation)에 대해 알아봤습니다. 이번에는 그 연속선 상에서 브로드캐스팅에 개념에 대해 알아보도록 하겠습니다. import numpy as np 브로드캐스팅? 브로드캐스팅 덕분에 서로 다른 형태(shape)의 배열을 연산할 수 있습니다. 연산이 가능한 이유는 서로 다른 shape을 동일한 형태로 일치시키기 때문입니다. 이처럼 브로드캐스팅은 배열 연산의 편리성을 높여주지만 의도하지 않은 버그를 유발할 수 있습니다. 따라서 브로드캐스팅의 발생 조건에 대해 확실하게 알고 있어야 합니다. 브로드캐스팅이 발생하는 조건은 총 2가지가 존재합니다. 배열의 차원(ndim)이 같거나 다른 경우인데 우선 전자부터 살펴보겠습니다. - 차원이 같은 경우..

파이썬・ML/numpy

넘파이 배열의 원소별 연산 이해하기(Element-wise operation)

이번 포스팅에서는 넘파이 배열의 연산 방식에 대해 알아보도록 하겠습니다. Element-wise 연산? arr1 = np.random.randint(-5, 5, (5, )) print(arr1) # [ 1 -1 -3 3 2] arr2 = np.random.randint(-5, 5, (5, )) print(arr2) # [ 3 4 -5 4 -3] print(arr1 + arr2) # [ 4 3 -8 7 -1] 기본적으로 넘파이 배열은 모두 원소별 연산을 수행합니다. 원소별로 연산한다는 것의 의미는 각 배열의 동일한 인덱스에 위치한 값들끼리 계산한다는 말입니다. 단, 연산하는 배열들의 shape은 동일해야 합니다. M = np.random.randint(1, 5, (2, 3)) print(M) # [[2 4..

파이썬・ML/numpy

넘파이 배열의 형태 조작하기(reshape/resize)

이번 포스팅에서는 넘파이 배열의 형태를 조작하는 reshape, resize 메서드에 대해 알아보도록 하겠습니다. import numpy as np reshape 메서드 - np.reshape(a, newshape, ...) - ndarray.reshape(shape, ...) arr1 = np.arange(6) print(arr1) # [0 1 2 3 4 5] print(arr1.shape) # (6, ) print(arr1.size) # 6 arr2 = np.reshape(arr1, (2, 4)) # ValueError: cannot reshape array of size 6 into shape (2,4) reshape 메서드는 기존 배열의 형태를 변환합니다. 단, 변환 전과 후의 size 속성값이 ..

파이썬・ML/numpy

넘파이 배열의 생성법과 기본 속성 이해하기

이번 포스팅에서는 넘파이 배열을 생성하는 방법과 넘파이 배열의 속성에 대해 알아보도록 하겠습니다. import numpy as np 1. 넘파이 배열 생성하기 넘파이 배열을 만드는 여러 메서드가 존재합니다. 넘파이 라이브러리가 생성하는 모든 배열의 타입은 numpy.ndarray입니다. ✅ np.array # a(스칼라) a = np.array(3.14) print(a) # 3.14 b(벡터) b = np.array([1, 2, 3]) print(b) # [1 2 3] c(행렬) c = np.array([[1, 2, 3], [4, 5, 6]]) print(c) # [[1 2 3] # [4 5 6]] d(3차원 텐서) d = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9],..

파이썬・ML/numpy

넘파이 배열 shape 속성에 대한 이해

안녕하세요! 넘파이 라이브러리 관련 첫 포스팅입니다. 이번 첫 포스팅에서는 넘파이 배열의 shape 속성에 대해 알아보도록 하겠습니다. 넘파이 배열의 연산이 어떻게 수행되는지 알기 위해서는 shape 속성에 대한 이해가 필요합니다. 1. shape 속성 읽는 방법 1-1. 스칼라 → 벡터 스칼라가 여러 개 모이면 1차원 배열(벡터)을 형성합니다. 위 그림에서는 3개의 스칼라가 모여 shape이 (3, )인 1차원 배열이 만들어집니다. 이때 만들어진 벡터를 보고 다음과 같이 생각해 볼 수 있어야 합니다. "1차원 배열이 3개의 원소로 구성되어 있네? 그리고 그 각 원소는 스칼라구나!" 1-2. 벡터 → 행렬 1차원 배열(벡터)이 여러 개 모이면 2차원 배열인 행렬을 이룹니다. 위 그림에서 shape이 (3..

파이썬・ML/numpy

넘파이 np.repeat(), np.tile() 배열 반복하기

지난번 포스팅에서는 배열을 합치는 API들에 대해 알아봤는데요, 이번 포스팅에서는 배열을 반복하는 API들에 대해 알아보도록 하겠습니다. np.repeat() np.repeat(a, repeats, axis) ndarray.repeat(repeats, axis) a = 3 b = np.array([1, 2, 3]) rep_a = np.repeat(a, 2) rep_b = np.repeat(b, 3) print(rep_a) # [3 3] print(rep_b) # [1 1 1 2 2 2 3 3 3] np.repeat() 메서드를 사용하면 배열을 원소별로 반복합니다. a = np.arange(4).reshape(2, 2) print(a) # [[0 1] # [2 3]] rep = np.repeat(a, 3)..

파이썬・ML/numpy

넘파이 np.hstack(), np.vstack(), np.concatenate() 배열 합치기

지난 시간에는 넘파이 배열의 차원을 변환/추가/제거/교체하는 API들에 대해서 알아봤습니다. 이번에는 서로 다른 배열을 합치는 메서드에 대해서 알아보려고 합니다. 나눠져 있는 데이터를 합칠 때 주로 사용하는데 그 빈도가 높은 만큼 각 메서드 사용법을 기억해두면 좋을 것 같습니다. 2차원 배열 합치기 2차원 배열(행렬)을 합칠 때 np.vstack(), np.hstack(), np.dstack() 메서드를 사용할 수 있습니다. np.vstack() np.vstack(tup) a = np.random.randint(0, 10, (1, 4)) b = np.random.randint(0, 10, (1, 4)) c = np.random.randint(0, 10, (1, 4)) print(a) # [[3 2 8 ..

파이썬・ML/numpy

넘파이 배열의 차원 다루기

이전 포스팅에서 넘파이 배열의 shape 속성을 정리한 적이 있습니다. 이번에는 그 연속선 상에서 배열의 차원을 다루는 방법들에 대해 알아보도록 하겠습니다. import numpy as np 형태(shape) 변환하기 np.reshape(a, newshape, order='C') a = np.arange(9) b = a.reshape((-1, 9)) c = a.reshape((9, -1)) print(a) # [0 1 2 3 4 5 6 7 8] print(b) # [[0 1 2 3 4 5 6 7 8]] print(c) # [[0] # [1] # [2] # [3] # [4] # [5] # [6] # [7] # [8]] np.reshape() 메서드를 사용하면 배열의 형태를 바꿀 수 있습니다. (배열의 차..

truezero
'넘파이' 태그의 글 목록