직전 포스팅에서 넘파이 배열의 원소별 연산(Element-wise operation)에 대해 알아봤습니다. 이번에는 그 연속선 상에서 브로드캐스팅에 개념에 대해 알아보도록 하겠습니다. import numpy as np 브로드캐스팅? 브로드캐스팅 덕분에 서로 다른 형태(shape)의 배열을 연산할 수 있습니다. 연산이 가능한 이유는 서로 다른 shape을 동일한 형태로 일치시키기 때문입니다. 이처럼 브로드캐스팅은 배열 연산의 편리성을 높여주지만 의도하지 않은 버그를 유발할 수 있습니다. 따라서 브로드캐스팅의 발생 조건에 대해 확실하게 알고 있어야 합니다. 브로드캐스팅이 발생하는 조건은 총 2가지가 존재합니다. 배열의 차원(ndim)이 같거나 다른 경우인데 우선 전자부터 살펴보겠습니다. - 차원이 같은 경우..
안녕하세요! 넘파이 라이브러리 관련 첫 포스팅입니다. 이번 첫 포스팅에서는 넘파이 배열의 shape 속성에 대해 알아보도록 하겠습니다. 넘파이 배열의 연산이 어떻게 수행되는지 알기 위해서는 shape 속성에 대한 이해가 필요합니다. 1. shape 속성 읽는 방법 1-1. 스칼라 → 벡터 스칼라가 여러 개 모이면 1차원 배열(벡터)을 형성합니다. 위 그림에서는 3개의 스칼라가 모여 shape이 (3, )인 1차원 배열이 만들어집니다. 이때 만들어진 벡터를 보고 다음과 같이 생각해 볼 수 있어야 합니다. "1차원 배열이 3개의 원소로 구성되어 있네? 그리고 그 각 원소는 스칼라구나!" 1-2. 벡터 → 행렬 1차원 배열(벡터)이 여러 개 모이면 2차원 배열인 행렬을 이룹니다. 위 그림에서 shape이 (3..
지난 시간에는 넘파이 배열의 차원을 변환/추가/제거/교체하는 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 ..