넘파이에서 브로드캐스팅, 조건 연산 배우기

상후·2025년 4월 1일
post-thumbnail

브로드캐스팅의 개념

기초 파이썬 문법에서는 반복문을 사용해서 전체 데이터에 연산을 적용했던 것과는 달리 넘파이는 연산이 전체 데이터로 확장됩니다. 반복문을 사용하지 않으니 코드가 짧아지고 읽기도 좋아집니다.

(사용 예시)

a = np.array( [1, 2, 3])
b = np.array( [2, 3, 4])
print(a+b)
print(a*b)
print(a%b)

스칼라(scalar) 연산은 전체 데이터에 확장 적용됩니다. 다음의 덧셈 연산은 a에 저장된 세 개의 값에 자동으로 반복 적용됩니다.
(사용 예시)

a = np.array( [1,2,3])
b = np.array( [2,3,4])
print(a+3)


브로드캐스팅 과정


브로드캐스팅 조건


행이나 열 중에 하나가 같아야 브로드 캐스팅이 가능하다

첫번째 그림은 가능하지만, 두번째 그림은 명확하지 않기 때문에 브로드캐스팅이 불가능하다.


조건 연산

ndarray와의 연산은 브로드캐스팅이 적용되어 전체 데이터에 연산이 반복 적용됩니다. 다음은 ndarray와 스칼라의 비교 연산 결과를 출력합니다.
(사용 예시)

arr = np.array([10, 20, 30])
print(arr > 10)

함수와 메서드

넘파이는 수치연산과 관련된 다양한 함수와 메서드를 제공합니다. 파이썬이 기본적으로 제공하는 함수도 기능을 확장해서 메서드로 제공합니다. ndarray의 데이터를 합하는 sum메서드를 사용해 보겠습니다.
(사용 예시)

arr = np.arange(8).reshape(4, 2)
print(arr.sum())


sum 메서드에 축정보를 지정할 수 있습니다. 파이썬 기본 함수 sum에서는 사용할 수 없는 기능입니다.


random(랜덤) 알아보기

sum 메서드뿐만 아니라 min(최솟값), max(최댓값), mean(평균), std(표준편차), var(분산) 메서드를 사용할 수 있습니다.

numpy를 사용해서 임의의 숫자를 만들 수도 있습니다. randint 함수는 입력된 범위에서 임의의 정수를 반환합니다. 다음 코드는 0부터 2까지 범위에서 임의의 숫자를 하나 선택합니다. 실행할 때마다 숫자가 변경해보기!
(사용 예시1)

np.random.randint(3)


(사용 예시2)

np.random.randint(46, size=5)


(사용 예시3)

np.random.randint(46, size=(2, 5))


axis

axis=0은 x축 방향으로 데이터의 합을 구하라는 의미로 각각의 행 단위로 합을 구하고 그 결과를 ndarray로 반환합니다. axis=1은 y축 방향으로 합을 구해서 열 단위로 데이터의 합을 계산합니다. axis 파라미터를 입력하지 않으면 default로 axis=None이 되며, 이는 전체 데이터의 합을 계산합니다.

행 단위로 합을 구하고

열 단위로 합을 구함

print(arr)
print(arr.sum(axis=0)) # 행 단위로 합을 구하고
print(arr.sum(axis=1)) # 열 단위로 합을 구함


profile
개발자를 꿈꾸는 학생

0개의 댓글