# Review of Matrices#

## Matrix Basics#

Like vectors, matrices are also a type of numpy array. Unlike vectors—which consist of data organized in a single dimension—matrices consist of data organized along two dimensions in a grid.

Like all numpy arrays, matrices are

*homogenously typed*, meaning the data they hold must always be of the same type.All numpy arrays consist of a single-dimensional string of data and information on how that data should be “folded” to create an array. A vector is just data that is not folded, while a matrix is data that is folded into a grid.

The shape of an array can be found in the

`.shape`

attribute.How an array is folded can be modified with the

`.reshape()`

method.

## Subsetting Matrices#

Subsetting matrices is just like subsetting vectors, except with two entries between the square brackets instead of one:

`[ , ]`

.The first entry in the square brackets relates to a location along the x-axis (rows), the second to the y-axis (columns).

You must always pass two locations to subset a matrix. If you want all rows or all columns, simply pass a

`:`

(e.g., to get all of the columns in the first row, you would pass`my_matrix[0, :]`

).Like vectors, you can subset using simple indexing using index values or ranges. This will return a view.

Like vectors, you can also subset with fancy indexing or a Boolean vector.

You can mix how you subset, and use a Boolean for rows and an index for columns.

Subsetting on both rows and columns allows you to edit matrices in very powerful ways.