반응형
요소별 행렬 곱셈(하다마드 제품)을 numpy로 얻는 방법은 무엇입니까?
나는 두개의 행렬을 가지고 있습니다.
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 제품)을 어떻게 얻을 수 있습니까?
요소별 곱셈의 경우matrix
사용할 수 있는 개체:
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]])
하지만, 당신은 정말로 사용해야 합니다.array
대신에matrix
.matrix
물체는 일반 ndarray와 모든 종류의 끔찍한 비호환성을 가지고 있습니다.ndarray를 사용하면 그냥*
요소별 곱셈의 경우:
a * b
Python 3.5+에서는 연산자를 사용하여 행렬 곱셈을 수행할 수 있습니다. 행렬 곱셈은 이제 다음과 같습니다.
a @ b # matrix multiplication
다음과 같이 하십시오.
import numpy as np
a = np.array([[1,2],[3,4]])
b = np.array([[5,6],[7,8]])
a * b
import numpy as np
x = np.array([[1,2,3], [4,5,6]])
y = np.array([[-1, 2, 0], [-2, 5, 1]])
x*y
Out:
array([[-1, 4, 0],
[-8, 25, 6]])
%timeit x*y
1000000 loops, best of 3: 421 ns per loop
np.multiply(x,y)
Out:
array([[-1, 4, 0],
[-8, 25, 6]])
%timeit np.multiply(x, y)
1000000 loops, best of 3: 457 ns per loop
둘다요.np.multiply
그리고.*
아다마드 제품으로 알려진 요소별 곱셈을 산출할 것입니다.
%timeit
아이시파이톤 마법
사용해 보십시오.
a = np.matrix([[1,2], [3,4]])
b = np.matrix([[5,6], [7,8]])
#This would result a 'numpy.ndarray'
result = np.array(a) * np.array(b)
여기서,np.array(a)
유형의 2D 배열을 반환합니다.ndarray
2의 곱셈ndarray
요소별 곱셈이 발생합니다.결과는 다음과 같습니다.
result = [[5, 12], [21, 32]]
행렬을 얻으려면 다음과 같이 하십시오.
result = np.mat(result)
언급URL : https://stackoverflow.com/questions/40034993/how-to-get-element-wise-matrix-multiplication-hadamard-product-in-numpy
반응형
'programing' 카테고리의 다른 글
파이썬에서 파일 찾기 (0) | 2023.06.23 |
---|---|
iOS 8은 "minimal-ui" 뷰포트 속성을 제거했는데, 다른 "소프트 전체 화면" 솔루션이 있습니까? (0) | 2023.06.23 |
invoke-customs는 Android 0 --min-api 26부터만 지원됩니다. (0) | 2023.06.23 |
이에 사용할 수 없는 구역. (0) | 2023.06.23 |
구성된 ObjectMapper가 spring-boot-webflux에서 사용되지 않음 (0) | 2023.06.23 |