# Matrix types for Python

The *matrix-types* package implements simple and intuitive matrix data types for
Python. Matrixes are often required to implement various algorithms or store
and process two-dimensional data arrays. While this can be (and often is)
achieved with built-in data types, such as lists of lists or tuples of tuples,
these approaches frequently require a programmatic approach that is aware of
the internal structure of the data, and because of the arbitrary lengths of
types such as `list`

and `tuple`

they offer little in the way
of assurances that their internal structure is (and remains) consistent.

The `Matrix`

and `FrozenMatrix`

types in the *matrix-types* package
implement mutable and immutable matrix data types with an interface modelled
closely on Python’s built-in data types, such as `list`

,
`tuple`

, and `dict`

– if you know how to use these you
probably already know how to use `Matrix`

and `FrozenMatrix`

!
The matrix types implemented here are also fully type annotated and support
generic types, meaning you can use static type checkers such as *mypy* to
avoid or spot potential issues in your code before they become a problem.

# Indices and tables

\(\begin{bmatrix}\textup{m} & \textup{a} & \textup{t} & \textup{r}\\\textup{i} & \textup{c} & \textup{e} & \textup{s}\end{bmatrix}\)