Immutable Matrices¶
The standard Matrix class in SymPy is mutable.
This is important for performance reasons but means that standard matrices
cannot interact well with the rest of SymPy. This is because the
Basic object, from which most SymPy classes inherit, is immutable.
The mission of the ImmutableDenseMatrix class, which is aliased as
ImmutableMatrix for short, is to bridge the tension
between performance/mutability and safety/immutability. Immutable matrices can
do almost everything that normal matrices can do but they inherit from
Basic and can thus interact more naturally with the rest of SymPy.
ImmutableMatrix also inherits from MatrixExpr, allowing it to
interact freely with SymPy’s Matrix Expression module.
You can turn any Matrix-like object into an ImmutableMatrix by calling
the constructor
>>> from sympy import Matrix, ImmutableMatrix
>>> M = Matrix([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
>>> M[1, 1] = 0
>>> IM = ImmutableMatrix(M)
>>> IM
Matrix([
[1, 2, 3],
[4, 0, 6],
[7, 8, 9]])
>>> IM[1, 1] = 5
Traceback (most recent call last):
...
TypeError: Can not set values in Immutable Matrix. Use Matrix instead.
ImmutableMatrix Class Reference¶
- sympy.matrices.immutable.ImmutableMatrix[source]¶
alias of
ImmutableDenseMatrix
- class sympy.matrices.immutable.ImmutableDenseMatrix(*args, **kwargs)[source]¶
Create an immutable version of a matrix.
Examples
>>> from sympy import eye, ImmutableMatrix >>> ImmutableMatrix(eye(3)) Matrix([ [1, 0, 0], [0, 1, 0], [0, 0, 1]]) >>> _[0, 0] = 42 Traceback (most recent call last): ... TypeError: Cannot set values of ImmutableDenseMatrix