소개
이 랩에서는 선형 대수, 난수 생성, 마스크 배열을 포함하여 NumPy 의 몇 가지 고급 기능을 다룹니다.
이 랩에서는 선형 대수, 난수 생성, 마스크 배열을 포함하여 NumPy 의 몇 가지 고급 기능을 다룹니다.
NumPy 는 선형 대수 연산을 위한 포괄적인 함수 집합을 가지고 있습니다. 다음은 몇 가지 예입니다.
터미널에서 다음 명령을 입력하여 Python 셸을 엽니다.
python3
두 배열의 내적은 np.dot() 함수를 사용하여 계산할 수 있습니다. 두 배열 A 와 B 의 내적은 A 와 B 의 해당 요소의 곱의 합으로 정의됩니다.
import numpy as np
## create two arrays
a = np.array([1, 2])
b = np.array([3, 4])
## calculate dot product
dot_product = np.dot(a, b)
print(dot_product) ## Output: 11
행렬 곱셈은 @ 연산자 또는 np.matmul() 함수를 사용하여 수행할 수 있습니다.
다음 예제를 주의 깊게 읽어보세요.
## create two matrices
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
## matrix multiplication
C = A @ B
print(C) ## Output: [[19 22], [43 50]]
다른 방법으로도 결과를 얻을 수 있습니다.
## create two matrices
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
## matrix multiplication
C = np.matmul(A,B)
print(C) ## Output: [[19 22], [43 50]]
행렬의 행렬식과 역행렬은 각각 np.linalg.det() 및 np.linalg.inv() 함수를 사용하여 계산할 수 있습니다.
## create a matrix
A = np.array([[1, 2], [3, 4]])
## calculate determinant and inverse
det_A = np.linalg.det(A)
inv_A = np.linalg.inv(A)
print(det_A) ## Output: -2.0
print(inv_A) ## Output: [[-2. 1. ], [ 1.5 -0.5]]
이제 두 개의 배열을 구성하고 np.dot() 함수를 사용하여 내적을 계산해 보세요. @ 또는 np.matmul()을 사용하여 행렬 곱셈을 계산하고, np.linalg.det() 및 np.linalg.inv() 함수를 사용하여 행렬식과 역행렬을 계산하세요.
NumPy 는 난수를 생성하기 위한 여러 함수를 제공합니다. 다음은 몇 가지 예입니다.
np.random.rand() 함수는 0 과 1 사이의 난수를 생성하는 데 사용할 수 있습니다.
## generate a 2x2 matrix of random numbers
a = np.random.rand(2, 2)
print(a) ## Output: [[0.43584547 0.37752558], [0.08936734 0.65526767]]
np.random.randint() 함수는 두 개의 지정된 숫자 사이의 난수 정수를 생성하는 데 사용할 수 있습니다.
## generate an array of random integers between 1 and 10
a = np.random.randint(1, 10, size=(3, 3))
print(a) ## Output: [[8 7 3], [3 3 7], [8 8 7]]
np.random.normal() 함수는 정규 분포에서 숫자를 생성하는 데 사용할 수 있습니다.
## generate an array of numbers from a normal distribution
a = np.random.normal(0, 1, size=(2, 2))
print(a) ## Output: [[ 1.28418331 -0.90564647], [-0.76477896 1.69903421]]
이제 위의 함수들을 따라 난수, 난수 정수 및 정규 분포의 출력을 완료하십시오. 이 연습을 완료하십시오.
Masked arrays 는 마스크가 연결된 배열입니다. 마스크는 배열의 어떤 요소를 마스크 (숨김) 해야 하는지를 나타내는 부울 값의 배열입니다. NumPy 는 masked arrays 를 사용하기 위한 np.ma 모듈을 제공합니다.
Masked array 는 np.ma.masked_array() 함수를 사용하여 생성할 수 있습니다.
## create an array with some values masked
a = np.ma.masked_array([1, 2, 3, 4], mask=[True, False, False, True])
print(a) ## Output: [-- 2 3 --]
마스크는 np.ma.masked_where() 함수를 사용하여 배열에 적용할 수 있습니다.
## create an array
a = np.array([1, 2, 3, 4])
## create a mask
mask = a > 2
## apply the mask
b = np.ma.masked_where(mask, a)
print(b) ## Output: [1 2 -- --]
Masked arrays 는 NaN(Not a Number, 숫자가 아님) 또는 무한대와 같은 유효하지 않은 값을 처리하는 데 사용할 수 있습니다.
## create an array with some invalid values
a = np.array([1, np.nan, np.inf, 4])
## create a masked array
b = np.ma.masked_invalid(a)
print(b) ## Output: [1.0 -- -- s4.0]
이제 numoy 에서 제공하는 np.ma 모듈을 사용하여 마스크 배열 생성을 완료하십시오. 동시에 np.ma.masked_where() 함수를 사용하여 배열에 마스크를 적용하고, 마지막으로 np.ma.masked_invalid()를 사용하여 유효하지 않은 값을 처리하십시오. 이 연습을 완료하십시오.
이 실험을 완료하신 것을 축하드립니다!
이 튜토리얼에서는 선형 대수, 난수 생성 및 masked arrays 를 포함하여 NumPy 의 몇 가지 고급 주제를 다루었습니다. 이러한 기능은 데이터 분석 및 과학 컴퓨팅을 포함한 많은 응용 분야에 유용합니다.
계속 열심히 노력하십시오!