배열의 차원과 크기가 다를때 자동으로 배열을 확장하여 연산을 수행하는 기능
크기와 차원을 맞추기 위한 규칙을 따르며, 차원이나 크기가 맞지 않으면 에러가 발생함.
두 배열의 마지막 차원부터 비교하여 각 차원의 크기가 같거나, 하나가 1이어야 합니다.
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)

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

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

arr[조건] = 조건이 참인 경우의 값만 뱉음
print('arr[arr > 10] : ', arr[arr > 10])

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

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

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)])

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(분산) 사용가능
i1 = np.random.randint(3) # 0, 1, 2범위에서 한개의 정수를 반환함
print('i1 : \n', i1)

i2 = np.random.randint(46, size = 5)
i3 = np.random.randint(46, size = (2, 5))
print('i2 : \n', i2)
print('i3 : \n', i3)

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

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)))

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