NumPy, часть 4: linalg

В прошлых частях мы разбирались с основными операциями над массивами и randomом в NumPy. Теперь же мы приступим к более серьёзным вещам, которые есть в NumPy. Первый на очереди у нас модуль numpy.linalg, позволяющий делать многие операции из линейной алгебры.

Возведение в степень

linalg.matrix_power(M, n) - возводит матрицу в степень n.

Разложения

linalg.cholesky(a) - разложение Холецкого.

linalg.qr(a[, mode]) - QR разложение.

linalg.svd(a[, full_matrices, compute_uv]) - сингулярное разложение.

Некоторые характеристики матриц

linalg.eig(a) - собственные значения и собственные векторы.

linalg.norm(x[, ord, axis]) - норма вектора или оператора.

linalg.cond(x[, p]) - число обусловленности.

linalg.det(a) - определитель.

linalg.slogdet(a) - знак и логарифм определителя (для избежания переполнения, если сам определитель очень маленький).

Системы уравнений

linalg.solve(a, b) - решает систему линейных уравнений Ax = b.

linalg.tensorsolve(a, b[, axes]) - решает тензорную систему линейных уравнений Ax = b.

linalg.lstsq(a, b[, rcond]) - метод наименьших квадратов.

linalg.inv(a) - обратная матрица.

Замечания:

  • linalg.LinAlgError - исключение, вызываемое данными функциями в случае неудачи (например, при попытке взять обратную матрицу от вырожденной).
  • Подробная документация, как всегда, на английском: https://docs.scipy.org/doc/numpy/reference/routines.linalg.html
  • Массивы большей размерности в большинстве функций linalg интерпретируются как набор из нескольких массивов нужной размерности. Таким образом, можно одним вызовом функции проделывать операции над несколькими объектами.
>>> a = np.arange(18).reshape((2,3,3))
>>> a
array([[[ 0,  1,  2],
        [ 3,  4,  5],
        [ 6,  7,  8]],

       [[ 9, 10, 11],
        [12, 13, 14],
        [15, 16, 17]]])
>>> np.linalg.det(a)
array([ 0.,  0.])

Обсуждение вопросов, не связанных со статьёй (в т.ч. комментарии типа "Помогите!", ведётся на форуме pythonworld.club, а не в комментариях.

Для вставки кода на Python в комментарий заключайте его в теги <pre><code class="python3">Ваш код</code></pre>
Опечатка в тексте:
Послать сообщение об ошибке автору?