## Matrix in NumPy

Matrix is a subclass within ndarray class in the Numpy python library. It is primarily used to convert a string or an array-like object into a 2D matrix. The matrix so returned is a specialized 2D array. Coming to the syntax, a matrix function is written as follows:

## Syntax:

numpy.matrix(data, dtype, copy)

• ## Data:

Data should be in the form of an array-like an object or a string separated by commas

• ## Dtype:

Data type of the returned matrix

• ## Copy:

This a flag like an object. It determines whether if data is already an array. The flag determines whether the data is copied or whether a new view is constructed.

## How to Create a Matrix in NumPy?

We can create a matrix in Numpy using functions like array(), ndarray() or matrix(). Matrix function by default creates a specialized 2D array from the given input. The input should be in the form of a string or an array object-like. Let’s demonstrate matrix creation using a matrix() with string as an input type.

## Code:

```importnumpy as np
#creating matrix from string
A = np.matrix('1 2 3; 4 5 6')
print("Array created using string is :\n", A)
```

## Output:

Now, let’s demonstrate matrix creation using a matrix() with an array-like object as the input type.

## Code:

```importnumpy as np
#creating matrix from array like object
B = np.matrix([[1, 2, 3], [4, 5, 6]])
print("Array created using array like object is :\n", B)
```

## Matrix Functions in NumPy with Examples

Having discussed Numpy matrix creation, now let’s discuss some important functions in this class. All the functions in the matrix subclass are very similar to the ndarray class.

Function Description
matrix.T Returns transpose of the input matrix
matrix.H Returns complex conjugate transpose of the input matrix
matrix.I Returns the multiplicative inverse of the matrix
matrix.A Return the input matrix as andarray object.
matrix.all() Checks whether all matrix elements along a given axis evaluate to True. It is similar to ndarray.all() function.
matrix.any() Checks whether any of the matrix elements along a given axis evaluate to True.
matrix.argmax() Returns the indices of the maximum values along an axis in the input matrix
matrix.argmin() Returns the indices of the minimum values along an axis in the input matrix
matrix.argsort() Returns the indices that would sort the matrix
matrix.astype() Returns the copy of the input matrix after type change
matrix.choose() Returns a new matrix with chosen indices from the input matrix
matrix.clip() Returns a new matrix within chosen limits from the input matrix
matrix.compress() Returns the selected slice of a matrix along the given axis
matrix.conj() Returns the complex conjugate of the given matrix
matrix.cumprod() Returns cumulative product of elements in the given matrix along a given axis
matrix.cumsum() Returns the cumulative sum of elements in the given matrix along with the given axis
matrix.diagonal() Returns diagonal elements of the matrix
matrix.dot() The returns dot product of two matrices

Few examples to illustrate matrix functions

## Code:

```import numpy as np
A = np.matrix('1 2 3; 4 5 6')
print("Matrix is :\n", A)
#Transpose of matrix
print("The transpose of matrix A is :\n", A.getT())
#Complex conjugate transpose
print("Complex transpose of matrix A is :\n", A.getH())
#Multiplicative inverse
print("Multiplicative inverse of matrix A is :\n", A.getI())
```

## Code:

```import numpy as np
A = np.matrix('1 2 3; 4 5 6')
print("Matrix is :\n", A)
#maximum indices
print("Maximum indices in A :\n", A.argmax(0))
#minimum indices
print("Minimum indices in A :\n", A.argmin(0))
```

## Code:

```import numpy as np
A = np.matrix('1 2 3; 4 5 6')
print("Matrix is :\n", A)
#clipping matrix
print("Clipped matrix is :\n", A.clip(1,4))
```

## Output:

Clip, slice, compress and choose are similar functions that can be used to select a specific part of the input matrix/array.

## Code:

```import numpy as np
A = np.matrix('1 2 3; 4 5 6; 7,8,9')
print("Matrix is :\n", A)
#cumulative product along axis = 0
print("Cumulative product of elements along axis 0 is : \n", A.cumprod(0))
#cumulative sum along axis = 0
print("Cumulative sum of elements along axis 0 is : \n", A.cumsum(0))
```

## Example #5 – Program to Find the Dot Product and Diagonal Values of a Given Matrix

In order to find the diagonal values of a given matrix, we can use a diagonal function with attributes such as offset, axis 1 and axis 2.

## Code:

```import numpy as np
A = np.matrix('1 2 3; 4 5 6; 7,8,9')
print("Matrix is :\n", A)
#diagonal values
print("Diagonal of matrix A :\n", A.diagonal(0,0,1))
#dot product
print("Dot product of matrix A with 2 :\n", A.dot(2))
```

## Output:

### Advantages of Matrix in NumPy

• One of the main advantages of using the NumPy matrix is that they take less memory space and provide better runtime speed when compared with similar data structures in python(lists and tuples).
• NumPy matrix support some specific scientific functions such as element-wise cumulative sum, cumulative product, conjugate transpose, and multiplicative inverse, etc. The python lists or strings fail to support these features.

Apply now for Advanced Python Training Course