Skip to main content
`Ctrl`+`K`
scipy.linalg.

# issymmetric

scipy.linalg.issymmetric(a, atol=None, rtol=None)

  Check if a square 2D array is symmetric.

  The documentation is written assuming array arguments are of specified “core” shapes. However, array argument(s) of this function may have additional “batch” dimensions prepended to the core shape. In this case, the array is treated as a batch of lower-dimensional slices; see Batched Linear Operations for details. Note that calls with zero-size batches are unsupported and will raise a `ValueError`.

  Parameters:
    a ndarray

      Input array of size (N, N).

    atol float, optional

      Absolute error bound

    rtol float, optional

      Relative error bound

  Returns:
    sym bool

      Returns True if the array symmetric.

  Raises:
    TypeError

      If the dtype of the array is not supported, in particular, NumPy float16, float128 and complex256 dtypes for exact comparisons.

  See also

  `ishermitian`

    Check if a square 2D array is Hermitian

  Notes

  For square empty arrays the result is returned True by convention. Complex valued arrays are tested for symmetricity and not for being Hermitian (see examples)

  The diagonal of the array is not scanned. Thus if there are infs, NaNs or similar problematic entries on the diagonal, they will be ignored. However, `numpy.inf` will be treated as a number, that is to say `[[1, inf], [inf, 2]]` will return `True`. On the other hand `numpy.nan` is never symmetric, say, `[[1, nan], [nan, 2]]` will return `False`.

  When `atol` and/or `rtol` are set to , then the comparison is performed by `numpy.allclose` and the tolerance values are passed to it. Otherwise an exact comparison against zero is performed by internal functions. Hence performance can improve or degrade depending on the size and dtype of the array. If one of `atol` or `rtol` given the other one is automatically set to zero.

  Examples

      >>> import numpy as np
      >>> from scipy.linalg import issymmetric
      >>> A = np.arange(9).reshape(3, 3)
      >>> A = A + A.T
      >>> issymmetric(A)
      True
      >>> Ac = np.array([[1. + 1.j, 3.j], [3.j, 2.]])
      >>> issymmetric(Ac)  # not Hermitian but symmetric
      True