NumPy 고급 기능

PythonBeginner
지금 연습하기

소개

이 랩에서는 선형 대수, 난수 생성, 마스크 배열을 포함하여 NumPy 의 몇 가지 고급 기능을 다룹니다.

이것은 가이드 실험입니다. 학습과 실습을 돕기 위한 단계별 지침을 제공합니다.각 단계를 완료하고 실무 경험을 쌓기 위해 지침을 주의 깊게 따르세요. 과거 데이터에 따르면, 이것은 초급 레벨의 실험이며 완료율은 96%입니다.학습자들로부터 100%의 긍정적인 리뷰율을 받았습니다.

NumPy 를 이용한 선형 대수

NumPy 는 선형 대수 연산을 위한 포괄적인 함수 집합을 가지고 있습니다. 다음은 몇 가지 예입니다.

Python 셸 열기

터미널에서 다음 명령을 입력하여 Python 셸을 엽니다.

python3

Dot Product (내적)

두 배열의 내적은 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

Matrix Multiplication (행렬 곱셈)

행렬 곱셈은 @ 연산자 또는 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]]

Determinant (행렬식) 및 Inverse (역행렬)

행렬의 행렬식과 역행렬은 각각 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 생성

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 의 몇 가지 고급 주제를 다루었습니다. 이러한 기능은 데이터 분석 및 과학 컴퓨팅을 포함한 많은 응용 분야에 유용합니다.

계속 열심히 노력하십시오!