본문 바로가기
Python/numpy

numpy ValueError: shapes (4,3) and (4,) not aligned 오류 해결하기

by PySun 2024. 10. 5.
반응형

소개

NumPy를 사용하다 보면 'ValueError: shapes (4,3) and (4,) not aligned' 라는 오류를 마주칠 수 있습니다. 이 오류는 두 개의 행렬 또는 배열의 차원이 일치하지 않을 때 발생하기 때문에, 특히 선형 대수를 수행할 때 주의가 필요합니다. 이번 포스팅에서는 이 오류의 원인과 해결 방법에 대해 알아보겠습니다.

에러 발생 예시 코드

먼저, 'ValueError: shapes (4,3) and (4,) not aligned' 에러가 발생할 수 있는 간단한 예시 코드를 살펴보겠습니다.

import numpy as np

# 4x3 행렬 생성
A = np.array([[1, 2, 3],
              [4, 5, 6],
              [7, 8, 9],
              [10, 11, 12]])

# 길이가 4인 1차원 배열 생성
b = np.array([1, 2, 3, 4])

# 행렬 A와 배열 b의 곱 계산 시도
result = np.dot(A, b)
print(result)

에러 해결 방법

1. 배열 b를 2차원으로 변환하기

배열 b의 차원을 행렬 곱셈이 가능하도록 변환하여 이 문제를 해결할 수 있습니다. 여기서는 b를 (4,1) 형태로 바꿔줍니다.

import numpy as np

# 4x3 행렬 생성
A = np.array([[1, 2, 3],
              [4, 5, 6],
              [7, 8, 9],
              [10, 11, 12]])

# 길이가 4인 1차원 배열 생성 후 2차원으로 변환
b = np.array([1, 2, 3, 4]).reshape((4, 1))

# 행렬 A와 배열 b의 곱 계산
result = np.dot(A, b)
print(result)

2. 행렬의 형태 확인하기

행렬의 형태를 사전에 확인하여 올바르게 설정되었는지를 확인해야 합니다. 배열의 형태를 확인하기 위해 .shape 속성을 활용하세요.

import numpy as np

# 4x3 행렬 생성
A = np.array([[1, 2, 3],
              [4, 5, 6],
              [7, 8, 9],
              [10, 11, 12]])

# 길이가 4인 1차원 배열 생성
b = np.array([1, 2, 3, 4])

# 배열의 형태 확인
print("A shape:", A.shape)
print("b shape:", b.shape)

# 적절한 곱셈 실행
result = np.dot(A, b)
print(result)

마무리

이번 블로그 포스트에서는 NumPy에서 'ValueError: shapes (4,3) and (4,) not aligned' 오류의 원인과 해결 방법에 대해 간단히 살펴보았습니다. 배열의 차원이 일치하지 않으면 이런 오류가 발생하니, 배열을 적절히 변환하거나 그 형태를 확인하여 문제를 해결할 수 있습니다. NumPy를 활용하면서도 언제나 배열의 차원과 형태에 주의하는 습관을 길러야 할 것입니다.

반응형