소개
NumPy 는 수치 계산에 사용되는 Python 라이브러리입니다. 배열과 행렬 작업을 위해 설계되어 과학적 계산에 강력한 도구입니다. 이 랩에서는 NumPy 배열 연산과 관련된 다음 세 가지 주제를 배우게 됩니다.
- 수학 연산 (Mathematical Operations)
- 브로드캐스팅 (Broadcasting)
- 유니버설 함수 (Universal Functions)
NumPy 는 수치 계산에 사용되는 Python 라이브러리입니다. 배열과 행렬 작업을 위해 설계되어 과학적 계산에 강력한 도구입니다. 이 랩에서는 NumPy 배열 연산과 관련된 다음 세 가지 주제를 배우게 됩니다.
NumPy 는 배열에 대한 다양한 수학 연산을 제공합니다. 이러한 연산은 하나 이상의 배열에서 수행될 수 있습니다.
터미널에서 다음 명령을 입력하여 Python 셸을 엽니다.
python3
NumPy 는 이미 설치되어 있으므로 Python 코드에서 가져올 수 있습니다.
import numpy as np
요소별 연산은 배열의 각 요소에 대해 수행되는 연산입니다.
두 개의 배열을 생성하고 몇 가지 요소별 연산을 수행해 보겠습니다.
## 두 개의 배열 생성
arr1 = np.array([1, 2, 3, 4])
arr2 = np.array([5, 6, 7, 8])
## 두 배열 더하기
print("두 배열 더하기: ", arr1 + arr2)
## 두 배열 빼기
print("두 배열 빼기: ", arr1 - arr2)
## 두 배열 곱하기
print("두 배열 곱하기: ", arr1 * arr2)
## 두 배열 나누기
print("두 배열 나누기: ", arr1 / arr2)
## 두 배열의 나눗셈 후 나머지 구하기
print("두 배열의 나머지: ", arr1 % arr2)
## 배열의 요소를 거듭제곱하기
print("배열을 거듭제곱하기: ", arr1 ** 2)
출력:
Adding two arrays: [ 6 8 10 12]
Subtracting two arrays: [-4 -4 -4 -4]
Multiplying two arrays: [ 5 12 21 32]
Dividing two arrays: [0.2 0.33333333 0.42857143 0.5 ]
Modulo of two arrays: [1 2 3 4]
Raising an array to a power: [ 1 4 9 16]
배열별 연산은 전체 배열에 대해 수행되는 연산입니다.
배열을 생성하고 몇 가지 배열별 연산을 수행해 보겠습니다.
## 배열 생성
arr = np.array([1, 2, 3, 4])
## 배열의 모든 요소의 합 구하기
print("배열의 합: ", np.sum(arr))
## 배열의 모든 요소의 곱 구하기
print("배열의 곱: ", np.prod(arr))
## 배열의 최소 요소 구하기
print("배열의 최소 요소: ", np.min(arr))
## 배열의 최대 요소 구하기
print("배열의 최대 요소: ", np.max(arr))
## 배열의 모든 요소의 평균 구하기
print("배열의 평균: ", np.mean(arr))
## 배열의 모든 요소의 표준 편차 구하기
print("배열의 표준 편차: ", np.std(arr))
출력:
Sum of array: 10
Product of array: 24
Minimum element in array: 1
Maximum element in array: 4
Average of array: 2.5
Standard deviation of array: 1.118033988749895
브로드캐스팅은 NumPy 의 기능으로, 서로 다른 형태의 배열 간에 요소별 연산을 허용합니다. 브로드캐스팅은 서로 다른 차원의 배열로 작업할 때 특히 유용합니다.
배열을 생성하고 몇 가지 브로드캐스팅 연산을 수행해 보겠습니다.
## 서로 다른 형태의 두 배열 생성
array1 = np.array([1, 2, 3])
array2 = np.array([[4, 5, 6], [7, 8, 9]])
## 더 작은 배열을 더 큰 배열로 브로드캐스팅
print("브로드캐스팅을 사용하여 두 배열 더하기: ", array1 + array2)
print("브로드캐스팅을 사용하여 두 배열 빼기: ", array1 - array2)
print("브로드캐스팅을 사용하여 두 배열 곱하기: ", array1 * array2)
print("브로드캐스팅을 사용하여 두 배열 나누기: ", array1 / array2)
출력:
Adding two arrays using broadcasting: [[ 5 7 9]
[ 8 10 12]]
Subtracting two arrays using broadcasting: [[-3 -3 -3]
[-6 -6 -6]]
Multiplying two arrays using broadcasting: [[ 4 10 18]
[ 7 16 27]]
Dividing two arrays using broadcasting: [[0.25 0.4 0.5 ]
[0.14285714 0.25 0.33333333]]
위의 코드에서, 형태가 (3,) 인 array1과 형태가 (2,3) 인 array2 두 개의 배열을 생성합니다. NumPy 의 브로드캐스팅 기능 덕분에 array1과 array2 간에 요소별 연산을 수행합니다. 더 작은 배열인 array1은 요소별 연산을 수행하기 위해 더 큰 배열인 array2로 브로드캐스팅됩니다. 브로드캐스팅은 서로 다른 형태의 배열에 대한 연산을 가능하게 합니다.
유니버설 함수, 또는 ufunc 는 배열에 요소별 방식으로 작동하는 함수입니다. 이는 배열에 대한 빠르고 효율적인 연산을 제공합니다.
배열을 생성하고 몇 가지 ufunc 를 수행해 보겠습니다.
## 배열 생성
arr = np.array([1, 2, 3, 4])
## 배열의 각 요소의 제곱근 구하기
print("배열의 제곱근: ", np.sqrt(arr))
## 배열의 각 요소의 지수 구하기
print("배열의 지수: ", np.exp(arr))
## 배열의 각 요소의 사인 (sin) 구하기
print("배열의 사인: ", np.sin(arr))
## 배열의 각 요소의 코사인 (cos) 구하기
print("배열의 코사인: ", np.cos(arr))
## 배열의 각 요소의 자연 로그 구하기
print("배열의 자연 로그: ", np.log(arr))
출력:
Square root of array: [1. 1.41421356 1.73205081 2. ]
Exponential of array: [ 2.71828183 7.3890561 20.08553692 54.59815003]
Sine of array: [ 0.84147098 0.90929743 0.14112001 -0.7568025 ]
Cosine of array: [ 0.54030231 -0.41614684 -0.9899925 -0.65364362]
Natural logarithm of array: [0. 0.69314718 1.09861229 1.38629436]
축하합니다! 이제 NumPy 배열 연산에 대해 배웠습니다. 여기에는 수학 연산, 브로드캐스팅 (Broadcasting), 그리고 유니버설 함수 (Universal Functions) 가 포함됩니다. 이 지식을 통해 이제 Python 으로 광범위한 수치 계산 작업을 수행할 수 있습니다.