# How to Perform Matrix Multiplication in Python

Matrix multiplication is an operation in which we multiply two or more matrices. A matrix consists of m rows and n columns. Each row from matrix1 is multiplied by each column in matrix2.

## Program for matrix multiplication in Python

``````mat1 = [[14, 5, 8],
[3, 7, 9],
[8, 9, 7]]
mat2 = [[8, 6, 4, 5],
[0, 6, 3, 9],
[3, 12, 7, 9]]
op = [[0, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0]]

for i in range(len(mat1)):
for j in range(len(mat2)):
for k in range(len(mat2)):
op[i][j] += mat1[i][k] * mat2[k][j]
for result in op:
print(result)
``````

#### Output

``````[136, 210, 127, 187]
[51, 168, 96, 159]
[85, 186, 108, 184]``````

We have created two matrices in this program, mat1, and mat2, with some elements. Matrix mat1 consists of 3 rows and 3 columns. And matrix mat2 consists of 3 rows and 4 columns. Hence the output matrix is formed for 3 rows and 4 columns.

We iterate over the length of the matrix mat1. Then the second for loop will be for several columns in matrix mat2. Finally, in the third for loop, it will iterate for a length of the matrix mat2. Inside these for loops, we will perform matrix multiplication by multiplying the element present in the i and k of the matrix mat1 and the k and j of the matrix mat2.

The output is printed as rows. This program can be used for multiplying 3 X 3 matrix with 3 X 4 matrix.

## Matrix multiplication using list comprehension

List comprehension offers a shorter syntax when you want to create a new list based on the values of an existing list.

``````mat1 = [[14, 5, 8],
[3, 7, 9],
[8, 9, 7]]
mat2 = [[8, 6, 4, 5],
[0, 6, 3, 9],
[3, 12, 7, 9]]

op = [[sum(i * j for i, j in zip(a, b))
for b in zip(*mat2)]
for a in mat1]

for result in op:
print(result)``````

#### Output

``````[136, 210, 127, 187]
[51, 168, 96, 159]
[85, 186, 108, 184]``````

In this example, we used list comprehension to calculate the matrix multiplication. This is similar to the previous approach. Instead of a nested loop, we used list comprehension. This example also has three loops for the operations.

## Matrix multiplication using numpy dot() in Python

To perform matrix multiplication in Python, use the np.dot() function. The np.dot() is the numpy library function that returns the dot product of two arrays. Specifically, If both a and b are 1D arrays, it is the inner product of vectors.

``````import numpy as np

mat1 = [[14, 5, 8],
[3, 7, 9],
[8, 9, 7]]
mat2 = [[8, 6, 4, 5],
[0, 6, 3, 9],
[3, 12, 7, 9]]

op =   [[0, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0]]

op = np.dot(mat1, mat2)

for result in op:
print(result)``````

In this program, we used numpy.dot() function to perform matrix multiplication. The dot(.) function multiplies the two matrixes data automatically.

That’s it for this tutorial.