vectores una transpuesta norma multiplicar matriz matrices inversa identidad como calcular python numpy matrix matrix-multiplication elementwise-operations

python - una - ¿Cómo obtener la multiplicación matricial por elementos(producto Hadamard) en numpy?



transpuesta de una matriz en python numpy (4)

Para la multiplicación por elementos de objetos matrix , puede usar numpy.multiply :

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

Resultado

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

Sin embargo, realmente debería usar una array lugar de una matrix . matrix objetos de matrix tienen todo tipo de incompatibilidades horribles con los ndarrays regulares. Con ndarrays, puede usar * para la multiplicación por elementos:

a * b

Si estás en Python 3.5+, ni siquiera pierdes la capacidad de realizar una multiplicación matricial con un operador, porque @ sí multiplica la matriz ahora :

a @ b # matrix multiplication

Tengo dos matrices

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

y quiero obtener el producto basado en elementos, [[1*5,2*6], [3*7,4*8]] , igual

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

Yo he tratado

print(np.dot(a,b))

y

print(a*b)

pero ambos dan el resultado

[[19 22], [43 50]]

que es el producto matriz, no el producto de elementos sabios. ¿Cómo puedo obtener el producto basado en elementos (también conocido como producto Hadamard) usando las funciones integradas?


Prueba esto:

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)

Aquí, np.array(a) devuelve una matriz 2D de tipo ndarray y la multiplicación de dos ndarray daría como resultado una multiplicación por elementos. Entonces el resultado sería:

result = [[5, 12], [21, 32]]

Si quieres obtener una matriz, hazlo con esto:

result = np.mat(result)


solo haz esto:

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

Tanto np.multiply como * producirían una multiplicación sabia de elementos conocida como Producto Hadamard

%timeit es ipython magic