본문 바로가기
파이썬

파이썬 numpy에서 요소 별 행렬 곱셈 (아다 마르 곱)을 얻는 방법은 무엇입니까?

by º기록 2020. 10. 28.
반응형

두 개의 행렬이 있습니다

a = np.matrix([[1,2], [3,4]])
b = np.matrix([[5,6], [7,8]])

요소 별 곱인 [[1 * 5,2 * 6], [3 * 7,4 * 8]] 을 얻고 싶습니다.

[[5,12], [21,32]]

나는 시도했다

print(np.dot(a,b)) 

print(a*b)

하지만 둘 다 결과를 제공합니다

[[19 22], [43 50]]

이것은 요소 별 곱이 아니라 행렬 곱입니다. 내장 함수를 사용하여 요소 별 제품 (일명 Hadamard 제품)을 얻으려면 어떻게해야합니까?

 

해결 방법

 


import numpy as np
a = np.array([[1,2],[3,4]])
b = np.array([[5,6],[7,8]])
np.multiply(a,b)

결과

array([[ 5, 12],
       [21, 32]])

그러나 실제로는 matrix 대신 array 를 사용해야합니다. matrix 객체에는 일반 ndarray와 모든 종류의 끔찍한 비 호환성이 있습니다. ndarrays를 사용하면 요소 별 곱셈에 * 를 사용할 수 있습니다.

a * b


a @ b  # matrix multiplication

 

참조 페이지 https://stackoverflow.com/questions/40034993

 

 

반응형

댓글