Python to AI

Python - NumPy(feat. Broadcasting)

최 수빈 2024. 12. 2. 13:25

 

Broadcasting;

크기가 다른 배열 간의 연산을 가능하게 해줌

 

 

 

 

배열 간의 기본 연산

#NumPy 배열 간의 덧셈, 뺄셈, 곱셈, 나눗셈 모두 요소별(element-wise)로 수행됨

import numpy as np

arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])

#덧셈
add_result = arr1 + arr2
print(add_result)

#곱셈
mul_result = arr1 * arr2
print(mul_result)

"""
출력

[5 7 9]
[ 4 10 18]
"""

 

 

 

 

브로드캐스팅(Broadcasting)

=> 작은 배열이 큰 배열의 형태에 맞게 자동으로 확장되어 연산이 이루어지는 것을 의미

=> 서로 다른 크기의 배열 간에도 연산 가능(작은 배열이 자동으로 확장되어 연산)

 

arr1 = np.array([1, 2, 3]) #(3,)
arr2 = np.array([[10], [20], [30]]) #(3, 1)

"""
arr1

[1, 2, 3]

브로드캐스팅 후
[[1, 2, 3],
[1, 2, 3],
[1, 2, 3]]

arr2

[[10],
[20],
[30]]

브로드캐스팅 후
[[10, 10, 10],
[20, 20, 20],
[30, 30, 30]]
"""

#브로드캐스팅을 이용한 덧셈
broadcasting_result = arr1 + arr2
print(broadcasting_result)

"""
출력

[[11 12 13]
 [21 22 23]
 [31 32 33]]
"""

 

 

 

NumPy 활용

기본적인 수학 함수와 통계 함수

 

#배열의 합(sum)과 곱(prod)

arr = np.array([1, 2, 3, 4])

#합계
sum_result = np.sum(arr)
print(sum_result)

#곱
prod_result = np.prod(arr)
print(prod_result)

"""
출력

10
24
"""
#제곱근과 로그
sqrt_result = np.sqrt(arr)
print(sqrt_result)

#자연로그
log_result = np.log(arr)
print(log_result)

"""
출력


[1.         1.41421356 1.73205081 2.        ]
[0.         0.69314718 1.09861229 1.38629436]
"""
#평균(mean), 중앙값(median), 표준편차(std)

arr = np.array([1, 2, 3, 4, 5])

#평균
mean_result = np.mean(arr)
print(mean_result)

#중앙값
median_result = np.median(arr)
print(median_result)

#표준편차
std_result = np.std(arr)
print(std_result)

"""
출력

3.0
3.0
1.4142135623730951

"""
#최대값(max), 최소값(min)

arr = np.array([1, 3, 2, 7, 5])

#최대값
max_result = np.max(arr)
print(max_result)

#최소값
min_result = np.min(arr)
print(min_result)

"""
출력

7
1
"""