# DOT_PRODUCT

Take two input matrices, multiply them (by dot product), and return the result. To multiply a scalar, use the MULTIPLY block. Params: a : Matrix The input matrix to be multiplied to input b. b : Matrix The input matrix to be multiplied to input a. Returns: out : Matrix The matrix result from the matrix multiplication.
Python Code
import numpy as np
from flojoy import Matrix, Scalar, Vector, flojoy

@flojoy
def DOT_PRODUCT(a: Matrix | Vector, b: Matrix | Vector) -> Matrix | Vector | Scalar:
"""Take two input matrices, multiply them (by dot product), and return the result.

To multiply a scalar, use the MULTIPLY block.

Parameters
----------
a : Matrix
The input matrix to be multiplied to input b.
b : Matrix
The input matrix to be multiplied to input a.

Returns
-------
Matrix
The matrix result from the matrix multiplication.
"""

if isinstance(a, Vector) and isinstance(b, Vector):
assert a.v.shape == b.v.shape, "Vector sizes must be equal."
return Scalar(c=np.dot(a.v, b.v))
elif isinstance(a, Matrix) and isinstance(b, Vector):
assert (
a.m.shape == b.v.shape
), "Vector size must be equal to Matrix column size."
return Vector(v=np.dot(a.m, b.v))
elif isinstance(a, Vector) and isinstance(b, Matrix):
assert (
a.v.shape == b.m.shape
), "Vector size must be equal to Matrix column size."
return Vector(v=np.dot(a.v, b.m))
elif isinstance(a, Matrix) and isinstance(b, Matrix):
assert (
a.m.shape == b.m.shape
), "Matrix 1 row length must be equal to Matrix 2 column length."
return Matrix(m=np.dot(a.m, b.m))


Find this Flojoy Block on GitHub

## Example

In this example, we generate two matrix by using MATRIX nodes. Then, these are multiplied using DOT_PRODUCT node.