Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python NumPy로 배열과 스칼라의 내적(Inner Product) 구하기

Python에서 배열과 스칼라의 내적(Inner Product)을 구하려면 numpy.inner() 메서드를 사용합니다. 이 함수는 1차원 배열에서는 일반적인 벡터의 내적을 계산하고, 그보다 높은 차원에서는 마지막 축을 기준으로 곱셈 후 합산(sum product)한 결과를 반환합니다.

주요 매개변수는 두 개입니다. 첫 번째는 배열 a, 두 번째는 배열 또는 스칼라 b입니다. 만약 ab가 모두 비스칼라(nonscalar)라면, 두 배열의 마지막 차원 크기가 서로 일치해야 합니다.

단계별 진행 방법

1단계: 필수 라이브러리 임포트

먼저 필요한 라이브러리를 임포트합니다.

import numpy as np

2단계: 배열 생성

numpy.eye()를 사용하여 배열을 생성합니다. 이 메서드는 대각선에는 1이 있고 나머지 위치에는 0이 채워진 2차원 단위 행렬(identity matrix)을 반환합니다.

arr = np.eye(5)

3단계: 스칼라 값 정의

내적에 사용할 스칼라 값을 정의합니다.

val = 2

4단계: 배열 속성 확인

생성된 배열의 데이터 타입(dtype)을 확인할 수 있습니다.

print("\nDatatype of Array...\n", arr.dtype)

배열의 차원 수(ndim)를 확인합니다.

print("\nDimensions of Array...\n", arr.ndim)

배열의 형태(shape)를 확인합니다.

print("\nShape of Array...\n", arr.shape)

5단계: 외적(Outer Product) 계산 (참고)

참고로, 배열과 스칼라의 외적을 구하려면 numpy.outer() 메서드를 사용합니다.

print("\nResult (Outer Product)...\n", np.outer(arr, val))

6단계: 내적(Inner Product) 계산

배열과 스칼라의 내적을 구하려면 numpy.inner() 메서드를 사용합니다.

print("\nResult (Inner Product)...\n", np.inner(arr, val))

전체 예제 코드

import numpy as np

# numpy.eye()로 배열 생성: 대각선은 1, 나머지는 0인 2차원 배열 반환
arr = np.eye(5)

# 스칼라 값
val = 2

# 배열 출력
print("Array...\n", arr)

# 데이터 타입 확인
print("\nDatatype of Array...\n", arr.dtype)

# 차원 확인
print("\nDimensions of Array...\n", arr.ndim)

# 형태 확인
print("\nShape of Array...\n", arr.shape)

# numpy.inner()로 배열과 스칼라의 내적 계산
print("\nResult (Inner Product)...\n", np.inner(arr, val))

실행 결과

Array...
[[1. 0. 0. 0. 0.]
[0. 1. 0. 0. 0.]
[0. 0. 1. 0. 0.]
[0. 0. 0. 1. 0.]
[0. 0. 0. 0. 1.]]

Datatype of Array...
float64

Dimensions of Array...
2

Shape of Array...
(5, 5)

Result (Inner Product)...
[[2. 0. 0. 0. 0.]
[0. 2. 0. 0. 0.]
[0. 0. 2. 0. 0.]
[0. 0. 0. 2. 0.]
[0. 0. 0. 0. 2.]]

결과 해석

실행 결과를 보면 np.eye(5)로 생성한 5×5 단위 행렬에 스칼라 값 2를 내적하면, 각 요소가 2배가 된 대각 행렬이 출력됩니다. 즉, 배열과 스칼라의 내적은 배열의 각 요소에 해당 스칼라를 곱한 것과 같습니다. 이는 스칼라가 모든 원소와 독립적으로 연산되기 때문이며, 배열 간의 내적(벡터 내적)과는 동작 방식이 다르다는 점을 기억해 두면 유용합니다.