NumPy 배열 연산

NumPyBeginner
지금 연습하기

소개

NumPy 는 수치 계산에 사용되는 Python 라이브러리입니다. 배열과 행렬 작업을 위해 설계되어 과학적 계산에 강력한 도구입니다. 이 랩에서는 NumPy 배열 연산과 관련된 다음 세 가지 주제를 배우게 됩니다.

  1. 수학 연산 (Mathematical Operations)
  2. 브로드캐스팅 (Broadcasting)
  3. 유니버설 함수 (Universal Functions)
이것은 가이드 실험입니다. 학습과 실습을 돕기 위한 단계별 지침을 제공합니다.각 단계를 완료하고 실무 경험을 쌓기 위해 지침을 주의 깊게 따르세요. 과거 데이터에 따르면, 이것은 초급 레벨의 실험이며 완료율은 98%입니다.학습자들로부터 97%의 긍정적인 리뷰율을 받았습니다.

수학 연산

NumPy 는 배열에 대한 다양한 수학 연산을 제공합니다. 이러한 연산은 하나 이상의 배열에서 수행될 수 있습니다.

Python 셸 열기

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

python3

NumPy 가져오기

NumPy 는 이미 설치되어 있으므로 Python 코드에서 가져올 수 있습니다.

import numpy as np

요소별 연산 (Element-wise Operations)

요소별 연산은 배열의 각 요소에 대해 수행되는 연산입니다.

두 개의 배열을 생성하고 몇 가지 요소별 연산을 수행해 보겠습니다.

## 두 개의 배열 생성
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]

배열별 연산 (Array-wise Operations)

배열별 연산은 전체 배열에 대해 수행되는 연산입니다.

배열을 생성하고 몇 가지 배열별 연산을 수행해 보겠습니다.

## 배열 생성
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 의 브로드캐스팅 기능 덕분에 array1array2 간에 요소별 연산을 수행합니다. 더 작은 배열인 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 으로 광범위한 수치 계산 작업을 수행할 수 있습니다.