numpy - 브로드캐스팅, 조건연장, 함수,

ahncheer·2025년 2월 6일

python

목록 보기
16/25

1. 브로드캐스팅?

배열의 차원과 크기가 다를때 자동으로 배열을 확장하여 연산을 수행하는 기능
크기와 차원을 맞추기 위한 규칙을 따르며, 차원이나 크기가 맞지 않으면 에러가 발생함.

1-1. 브로드캐스팅 조건

두 배열의 마지막 차원부터 비교하여 각 차원의 크기가 같거나, 하나가 1이어야 합니다.

1-2. 배열의 차원수가 다를때

import numpy as np
a = np.array([1, 2, 3]) # 1차원배열, 크기 : (3, )
b = np.array([[10], [20], [30]]) # 2차원배열, 크기(3, 1)
print('a + b : \n', a + b)

1-3. 크기가 1인 차원 확장

c = np.array([[10, 20, 30]]) #2차원배열, 크기(1, 2)
d = np.array([5, 6, 7]) # 1차원배열, 크기 (3, )
print('c + d : \n', c + d)

2. 조건연산

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

cond = arr > 10
print('arr[cond] : ', arr[cond])

2-1. 위 조건을 짧게 정리하기

arr[조건] = 조건이 참인 경우의 값만 뱉음

print('arr[arr > 10] : ', arr[arr > 10])

2-2. 조건이 모두 참인지 : .all()

print('cond.all() : ', cond.all())

2-3. 조건 중 하나라도 참인지 : .any()

print('cond.any() : ', cond.any())

2-4. 여러 조건 확인하기 (&, |, ~)

arr2 = np.array([10, 20, 30, 40])
cond0 = arr2 > 10
cond1 = arr2 < 30
print('arr2[cond0 & cond1] : ', arr2[cond0 & cond1])
print('arr1[(arr2 > 10) & (arr2 < 30)] : ', arr2[(arr2 > 10) & (arr2 < 30)])

3. 함수와 메서드

3-1. 합 구하기

arr3 = np.arange(8).reshape(4, 2)
print('arr3.sum() :', arr3.sum()) # ()에 값을 넣지 않으면 default으로 (axis=None) 처리됨
print('arr3.sum(axis=0) :', arr3.sum(axis=0)) # x축 방향으로 데이터 합 구하기
print('arr3.sum(axis=1) :', arr3.sum(axis=1)) # y축 방향으로 합 구하기 

위의 sum 메서드 뿐만 아니라 min(최솟값), max(최댓값), mean(평균), std(표준편차), var(분산) 사용가능

3-2. 랜덤 숫자 만들기 - randint

i1 = np.random.randint(3) # 0, 1, 2범위에서 한개의 정수를 반환함
print('i1 : \n', i1)

3-3. 랜덤숫자 구하기 - 숫자의 개수 지정하기기

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

print('i2 : \n', i2)
print('i3 : \n', i3)

3-4. 균일한 크기로 분할하기 - linspace(시작값, 종료값, 분할지점의 수)

x = np.linspace(0, 10, 3)
print('np.linspace(0, 10, 3) : \n', np.linspace(0, 10, 3))

3-5. 열의 개수가 같은 배열을 행방향(세로)으로 쌓기 - vstack

arr4 = np.arange(6).reshape(2, 3)
arr5 = np.arange(7, 13).reshape(2, 3)
print('np.vstack((arr4, arr5)) : \n', np.vstack((arr4, arr5)))

3-6. 행의 개수가 같은 배열을 열방향(가로)으로 쌓기 - hstack

print('np.hstack((arr4, arr5)) : \n', np.hstack((arr4, arr5)))

profile
개인 공부 기록용.

0개의 댓글