NumPy 배열 연산 및 선형 대수 기능 활용

배열의 기본 연산

NumPy를 사용하면 반복문 없이도 배열 내 각 요소에 대해 수학적 연산을 수행할 수 있습니다. 모든 연산은 자동으로 벡터화되어, 효율적인 저수준 코드로 데이터 시퀀스를 처리합니다. 즉, 배열에 대한 수학 연산은 각 요소에 대해 자동으로 적용됩니다.

배열과 스칼라 연산

data1 = np.arange(1, 10)
print(data1 + 5)
print(data1 * 3)

출력:

[6 7 8 9 10 11 12 13 14]
[ 3  6  9 12 15 18 21 24 27]

배열 간 연산

data2 = np.array([1, 2, 3, 1, 2, 3, 1, 2, 3])
print(data1 + data2)
print(data1 * data2)
print(data1 ** data2)

출력:

[2 4 6 5 7 9 8 10 12]
[1 4 9 5 10 15 8 16 24]
[ 1  4 27  5 25 125  8  64  216]

일반 단항 함수

각 요소에 대해 작용하는 함수들입니다.

print(np.sqrt(data1))
print(np.log2(data1))

출력:

[1.         1.41421356 1.73205081 2.         2.23606798 2.44948974
 2.64575131 2.82842712 3.        ]
[0.         1.         1.5849625  2.         2.32192809 2.5849625
 2.80735492 3.         3.169925  ]

일반 이항 함수

matrix_a = np.array([[2, 3], [4, 5]])
matrix_b = np.array([[1, 2], [3, 1]])
print(np.power(matrix_a, matrix_b))
print(matrix_a ** matrix_b)

출력:

[[ 2  9]
 [64  5]]
[[ 2  9]
 [64  5]]

브로드캐스트 메커니즘

다른 크기의 배열 간에도 연산이 가능할 수 있습니다. 조건은 뒤에서부터 시작한 차원이 동일하거나 하나의 차원이 1인 경우입니다.

grid = np.array([[0, 0, 0], [1, 1, 1], [2, 2, 2]])
vector = np.array([1, 2, 3])
result = grid + vector
print(result)

출력:

[[1 2 3]
 [2 3 4]
 [3 4 5]]

기타 유용한 배열 함수

다음은 흔히 사용되는 다른 배열 조작 함수들입니다.

arr1 = np.array([[1, 1], [2, 2]])
arr2 = np.array([[3, 3], [4, 4]])

# 수평 결합
np.hstack((arr1, arr2))

# 수직 결합
np.vstack((arr1, arr2))

# 축 기준 연결
np.concatenate((arr1, arr2), axis=1)

출력 예시:

[[1 1 3 3]
 [2 2 4 4]]

선형 대수 연산

NumPy의 linalg 모듈은 행렬 연산을 위한 다양한 기능을 제공합니다.

주요 함수 정리

  • inv(): 행렬의 역행렬 계산
  • det(): 행렬식 계산
  • eig(): 고유값과 고유벡터 계산
  • svd(): 특이값 분해
  • solve(): 선형 방정식 시스템 해 찾기
  • lstsq(): 최소제곱 해 계산
mat = np.array([[2., 1.], [1., 3.]])
print(np.linalg.inv(mat))

출력:

[[ 0.6 -0.2]
 [-0.2  0.4]]

태그: NumPy 배열 연산 브로드캐스트 선형대수 행렬연산

5월 23일 07:38에 게시됨