NumPy Tutorial-NumPy 수학 연산 및 방송

Jinku Hu 2023년1월30일
  1. NumPy 산술 연산
  2. NumPy 방송
NumPy Tutorial-NumPy 수학 연산 및 방송

이 장에서는 기본 산술 연산 및 행렬 연산과 같은 NumPy 의 연산에 대해 설명합니다.

기본 산술 연산부터 시작하겠습니다.

NumPy 산술 연산

더하기, 빼기, 곱하기 및 나누기는 NumPy 에서 가장 기본적인 산술 연산입니다. 숫자 사이의 일반적인 산술 연산과 유사합니다.

import numpy as np

arrayA = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
arrayB = arrayA.T
# array([[1, 2, 3],
#       [4, 5, 6],
#       [7, 8, 9]])

arrayB = arrayA.T
# array([[1, 4, 7],
#       [2, 5, 8],
#       [3, 6, 9]])

arrayA + arrayB
# array([[ 2,  6, 10],
#       [ 6, 10, 14],
#       [10, 14, 18]])

arrayA - arrayB
# array([[ 0, -2, -4],
#       [ 2,  0, -2],
#       [ 4,  2,  0]])

arrayA * arrayB
# array([[ 1,  8, 21],
#       [ 8, 25, 48],
#       [21, 48, 81]])

arrayA / arrayB
# array([[1.        , 0.5       , 0.42857143],
#       [2.        , 1.        , 0.75      ],
#       [2.33333333, 1.33333333, 1.        ]])

행렬 곱셈 연산 인*는 요소를 결과 배열의 같은 위치에 놓기 위해 두 배열의 같은 위치에있는 요소를 곱한다는 점에 유의해야합니다. np.dot 방법으로 계산해야하는 주어진 두 배열의 내적은 아닙니다.

np.dot(arrayA, arrayB)
# array([[ 14,  32,  50],
#       [ 32,  77, 122],
#       [ 50, 122, 194]])

NumPy 방송

배열 수학 연산에서 두 배열의 모양은 동일해야합니다. 그러나 NumPy 는 broadcasting의 개념을 도입하여 두 배열의 모양이 같지 않은 경우 가능하면 배열을 자동으로 채 웁니다.

이 개념을 예제와 함께 설명하겠습니다.

import numpy as np

arrayA = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
arrayA + 1
# array([[ 2,  3,  4],
#       [ 5,  6,  7],
#       [ 8,  9, 10]])

여기서 1arrayA 의 모든 요소에 추가됩니다. 즉,1(1, 1)모양에서 arrayA 와 같은 모양으로 방송됩니다.-(3, 3 )를 사용하여 배열 추가 작업을 수행하십시오.

실제 작업은 다음과 같습니다.

arrayA + np.array([[1, 1, 1], [1, 1, 1], [1, 1, 1]])

NumPy 의 방송은 아래 시나리오에서도 사용될 수 있습니다.

두 배열의 길이는 한 차원에서 길이가 같고 한 배열의 길이는 다른 차원에서 1입니다

하나의 예부터 시작하겠습니다.

arrayC = np.array([10, 11, 12])
arrayA + arrayC
# array([[11, 13, 15],
#       [14, 16, 18],
#       [17, 19, 21]])

arrayA 의 모양은(3, 3)이고 arrayC 의 모양은(3, 1)입니다. 배열 차원의 기준을 충족하며 arrayC 의 단일 행에있는 데이터는 arrayA 의 모양과 일치하도록 3 개의 행으로 브로드 캐스트됩니다.

두 배열의 행 길이가 동일한 경우에도 적용 가능합니다.

arrayD = np.array([[10], [11], [12]])
# array([[10],
#       [11],
#       [12]])
arrayA + arrayD
# array([[11, 12, 13],
#       [15, 16, 17],
#       [19, 20, 21]])
작가: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook