두 개의 행렬이 있습니다
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
객체의 요소 별 곱셈의 경우 다음을 사용할 수 있습니다 numpy.multiply
.
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와 모든 종류의 끔찍한 비 호환성이 있습니다. ndarrays를 사용 *
하면 요소 별 곱셈에 사용할 수 있습니다 .
a * b
파이썬 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
및 둘 다 *
Hadamard Product로 알려진 요소 현명한 곱셈을 산출합니다.
%timeit
ipython 마술입니다
답변
이 시도:
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 배열 유형을 반환하고 2를 ndarray
곱 ndarray
하면 요소 현명한 곱셈이됩니다. 따라서 결과는 다음과 같습니다.
result = [[5, 12], [21, 32]]
행렬을 얻으려면 다음과 같이하십시오.
result = np.mat(result)