# Matrix¶

class `datastructuretools.``Matrix`(*args, **kwargs)

A matrix.

Initializes from rows:

```>>> matrix = datastructuretools.Matrix([
...     [0, 1, 2, 3],
...     [10, 11, 12, 13],
...     [20, 21, 22, 23],
...     ])
```
```>>> matrix
Matrix(3x4)
```
```>>> matrix[:]
((0, 1, 2, 3), (10, 11, 12, 13), (20, 21, 22, 23))
```
```>>> matrix[2]
(20, 21, 22, 23)
```
```>>> matrix[2][0]
20
```

Initializes from columns:

```>>> matrix = datastructuretools.Matrix(columns=[
...     [0, 10, 20],
...     [1, 11, 21],
...     [2, 12, 22],
...     [3, 13, 23],
...     ])
```
```>>> matrix
Matrix(3x4)
```
```>>> matrix[:]
((0, 1, 2, 3), (10, 11, 12, 13), (20, 21, 22, 23))
```
```>>> matrix[2]
(20, 21, 22, 23)
```
```>>> matrix[2][0]
20
```

Matrix currently implements only item retrieval.

Concatenation and division remain to be implemented.

Standard transforms of linear algebra remain to be implemented.

## Attribute summary¶

 `columns` Columns of matrix. `rows` Rows of matrix. `__eq__`(expr) Is true when ID of expr equals ID of Abjad object. `__format__`([format_specification]) Formats Abjad object. `__getitem__`(i) Gets row i from matrix. `__hash__`() Hashes Abjad object. `__ne__`(expr) Is true when Abjad object does not equal expr. `__repr__`() Gets interpreter representation of matrix.

`Matrix.``columns`

Columns of matrix.

```>>> matrix = datastructuretools.Matrix(
...     [[0, 1, 2, 3],
...     [10, 11, 12, 13],
...     [20, 21, 22, 23],
...     ])
```
```>>> matrix.columns
((0, 10, 20), (1, 11, 21), (2, 12, 22), (3, 13, 23))
```

Returns tuple.

`Matrix.``rows`

Rows of matrix.

```>>> matrix = datastructuretools.Matrix(
...     [[0, 1, 2, 3],
...     [10, 11, 12, 13],
...     [20, 21, 22, 23],
...     ])
```
```>>> matrix.rows
((0, 1, 2, 3), (10, 11, 12, 13), (20, 21, 22, 23))
```

Returns tuple.

## Special methods¶

`(AbjadObject).``__eq__`(expr)

Is true when ID of expr equals ID of Abjad object. Otherwise false.

Returns true or false.

`(AbjadObject).``__format__`(format_specification='')

Set format_specification to ‘’ or ‘storage’. Interprets ‘’ equal to ‘storage’.

Returns string.

`Matrix.``__getitem__`(i)

Gets row i from matrix.

```>>> matrix[1]
(10, 11, 12, 13)
```

Returns row.

`(AbjadObject).``__hash__`()

Required to be explicitly redefined on Python 3 if __eq__ changes.

Returns integer.

`(AbjadObject).``__ne__`(expr)

Is true when Abjad object does not equal expr. Otherwise false.

Returns true or false.

`Matrix.``__repr__`()

Gets interpreter representation of matrix.

```>>> matrix
Matrix(3x4)
```

Returns string.