In addition to having built-in support for many linear algebra-related operations, Let’s see how NumPy can create special matrices, such as the identity matrix.

An identity matrix can be constructed using the `np.eye()`

functions, which takes an integer argument that determines the *n x n* size of the square identity matrix.

# 4x4 identity matrix identity = np.eye(4)

In the output terminal, `identity`

renders as:

[[1. 0. 0. 0.] [0. 1. 0. 0.] [0. 0. 1. 0.] [0. 0. 0. 1.]]

A matrix or vector of all zeros can be constructed using the `np.zeros()`

function, which takes in a tuple argument for the shape of the NumPy array filled with zeros.

# 5-element vector of zeros zero_vector = np.zeros((5))

This will output in the terminal as:

[0. 0. 0. 0. 0.]

# 3x2 matrix of zeros zero_matrix = np.zeros((3,2))

This will output in the terminal as:

[[0. 0.] [0. 0.] [0. 0.]]

The transpose of a matrix can be accessed using the `.T`

attribute of a NumPy array as shown below:

A = np.array([[1,2],[3,4]]) A_transpose = A.T

If we print `A`

and `A_transpose`

out in the terminal, `A`

outputs as:

[[1 2] [3 4]]

While `A_transpose`

outputs as:

[[1 3] [2 4]]

Since `A_transpose`

is the transpose of `A`

, the rows and columns are swapped.

### Instructions

**1.**

In **script.py**, two NumPy arrays are given, `A`

and `B`

, representing two 3x3 matrices. Print out the matrix product of `AB`

and the matrix product of `BA`

.

What does this say about the relationship between matrix `A`

and matrix `B`

?

**2.**

Print out the transpose of both matrix `A`

and matrix `B`

. What is the first row of each transposed matrix?