Matrix#

class discopy.matrix.Matrix(dom, cod, array)[source]#

Bases: Box

Implements a matrix with dom, cod and numpy array.

Examples

>>> m = Matrix(PRO(2), PRO(2), [0, 1, 1, 0])
>>> v = Matrix(PRO(1), PRO(2), [0, 1])
>>> assert (str(v) == repr(v)
...                == 'Matrix(dom=PRO(1), cod=PRO(2), array=[0, 1])')
>>> v >> m >> v.dagger()
Matrix(dom=PRO(1), cod=PRO(1), array=[0])
>>> m + m
Matrix(dom=PRO(2), cod=PRO(2), array=[0, 2, 2, 0])
>>> assert m.then(m, m, m, m) == m == m >> m >> m >> m >> m

The monoidal product for Matrix is the direct sum:

>>> x = Matrix(PRO(2), PRO(1), [2, 4])
>>> x.array
array([[2],
       [4]])
>>> x @ x
Matrix(dom=PRO(4), cod=PRO(2), array=[2, 0, 4, 0, 0, 2, 0, 4])
>>> (x @ x).array
array([[2, 0],
       [4, 0],
       [0, 2],
       [0, 4]])
property array#

Numpy array.