numpy.linalg.matrix_rank

numpy.linalg.matrix_rank(M, tol=None, hermitian=False)

Функция linalg.matrix_rank() вычисляет ранг матрицы с помощью ее SVD разложения.

Параметры:
M - массивы NumPy или подобные массивам объекты.
Входной массив. Если на вход подан одномерный массив (вектор) у которого хотябы один элемент отличен от 0, то будет возвращена 1, если все элементы равны 0, то функция выдаст 0. Если на вход подан двумерный массив, то он рассматривается как матрица. Если M - это многомерный массив, то он рассматривается как последовательность матриц по последним двум осям, и ранг вычисляется для каждой его подматрицы.
tol - число или последовательность чисел (необязательный параметр).
Устанавливает порог, ниже которого значения SVD разложения считаются нулевыми. По умолчанию равен None, в этом случае tol принимает значение равное S.max() * max(M.shape) * eps в котором S - это матрица с сингулярными значениями входной матрицы, eps - машинная эпсилон для типа данных S. Если tol устанавливается для многомерного массива, то он должен представлять из себя последовательность чисел, в которой каждое число соответствует каждой оси, кроме двух последних. С версии 1.14.0 поддерживается механизм транслирования.
hermitian - True или False (необязательный параметр).
Значение True следует ставить только если входная матрица является эрмитовой или симметричной. В этом случае ранг матрицы может быть вычислен гораздо быстрее. По умолчанию установлено False. Доступно с версии 1.14.0.
Возвращает:
результат - массив NumPy или число
Произведение Кронекера указанных массивов.
Смотрите так же:
det, slogdet, svd


Примеры

>>> import numpy as np
>>> from numpy import linalg as LA
>>> 
>>> a = np.eye(5)
>>> a
array([[1., 0., 0., 0., 0.],
       [0., 1., 0., 0., 0.],
       [0., 0., 1., 0., 0.],
       [0., 0., 0., 1., 0.],
       [0., 0., 0., 0., 1.]])
>>> 
>>> LA.matrix_rank(a)
5
>>> 
>>> 
>>> b = np.random.randint(4, size = (5, 5))
>>> b
array([[3, 3, 2, 1, 2],
       [3, 2, 3, 2, 3],
       [2, 1, 1, 2, 3],
       [1, 3, 1, 2, 3],
       [3, 3, 1, 3, 0]])
>>> 
>>> LA.matrix_rank(b)
5
>>> 
>>> 
>>> c = np.random.randint(4, size = (3, 2, 2))
>>> c
array([[[3, 3],
        [3, 1]],

       [[3, 0],
        [1, 0]],

       [[3, 1],
        [1, 0]]])
>>> 
>>> LA.matrix_rank(c)
array([2, 1, 2], dtype=int32)
>>> 
>>> LA.matrix_rank(c[0])
2