0Pricing
Learn AI with Python · Урок

Линейная алгебра с NumPy

np.dot, np.linalg.inv, np.linalg.eig, np.linalg.solve для систем уравнений.

«Линейная алгебра с NumPy» — бесплатный урок Learn AI with Python на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Learn AI with Python, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Learn AI with Python содержит 4 уроков всего.

Линейная алгебра в NumPy

NumPy предоставляет операции над матрицами через оператор @ и модуль np.linalg — основу почти каждого алгоритма машинного обучения.

Умножение матриц с помощью @

Оператор @ выполняет настоящее матричное умножение. Внутренние размерности должны совпадать: (m,k) @ (k,n) даёт (m,n).

import numpy as np
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
print(A @ B)
# [[19 22]
#  [43 50]]

@ и * (важно!)

* выполняет поэлементное умножение, а @ — матричное. Путаница между ними — классическая ошибка.

print(A * B)   # element-wise: [[ 5 12]
               #               [21 32]]
print(A @ B)   # matrix product (different result)

np.dot

np.dot — функциональная форма. Для двумерных массивов она эквивалентна @, а для одномерных вычисляет скалярное произведение (скаляр).

u = np.array([1, 2, 3])
v = np.array([4, 5, 6])
print(np.dot(u, v))   # 1*4 + 2*5 + 3*6 = 32

Обратная матрица

np.linalg.inv(A) возвращает обратную матрицу — матрицу, которая при умножении на A даёт единичную матрицу. Обратная матрица существует только для квадратных невырожденных матриц.

A = np.array([[4.0, 7.0], [2.0, 6.0]])
Ainv = np.linalg.inv(A)
print(np.round(A @ Ainv, 6))   # identity

Определитель

np.linalg.det(A) возвращает определитель. Определитель, равный 0, означает, что матрица вырожденная и не может быть обращена.

print(np.linalg.det(A))   # 10.0  (nonzero -> invertible)

Решение систем линейных уравнений

Чтобы решить A x = b, предпочтительнее использовать np.linalg.solve(A, b), чем вычислять обратную матрицу. Этот способ быстрее и обеспечивает более высокую численную устойчивость.

A = np.array([[3.0, 1.0], [1.0, 2.0]])
b = np.array([9.0, 8.0])
x = np.linalg.solve(A, b)
print(x)   # [2. 3.]

Почему solve лучше inv

Вычисление inv(A) @ b приводит к лишней работе и усиливает погрешность округления. solve напрямую использует разложение LU. В реальном коде выбирайте solve.

# Avoid:  x = np.linalg.inv(A) @ b
# Prefer: x = np.linalg.solve(A, b)

Собственные значения и собственные векторы

np.linalg.eig(A) возвращает собственные значения и собственные векторы. Они лежат в основе PCA, анализа устойчивости и многих других методов.

A = np.array([[2.0, 0.0], [0.0, 3.0]])
vals, vecs = np.linalg.eig(A)
print(vals)   # [2. 3.]

Нормы векторов и матриц

np.linalg.norm измеряет величину. По умолчанию для векторов это евклидова норма (L2), используемая повсюду — от вычисления расстояний до регуляризации.

v = np.array([3.0, 4.0])
print(np.linalg.norm(v))        # 5.0 (sqrt(9+16))
print(np.linalg.norm(v, 1))    # 7.0 (L1 norm)

Транспонирование

A.T транспонирует матрицу, меняя местами строки и столбцы. Оно постоянно встречается в формулах, например в нормальных уравнениях.

A = np.array([[1, 2, 3], [4, 5, 6]])
print(A.T)
# [[1 4]
#  [2 5]
#  [3 6]]

Проверка знаний

Проверьте, что Вы помните о линейной алгебре.

Повторение

Инструменты линейной алгебры:

  • @ / np.dot для матричного и скалярного произведения (не *)
  • np.linalg.inv, np.linalg.det
  • np.linalg.solve(A, b) лучше обращения матрицы
  • np.linalg.eig для собственного разложения
  • np.linalg.norm для измерения величин, A.T для транспонирования

Часто задаваемые вопросы

Урок «Линейная алгебра с NumPy» бесплатный?

Да — полный текст урока «Линейная алгебра с NumPy» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Learn AI with Python, подпишись на CoddyKit PRO. Курс Learn AI with Python содержит 4 уроков всего.

Чему я научусь в уроке «Линейная алгебра с NumPy»?

np.dot, np.linalg.inv, np.linalg.eig, np.linalg.solve для систем уравнений. Ты практикуешь Learn AI with Python с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Learn AI with Python?

Предыдущий опыт не требуется. Learn AI with Python на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Линейная алгебра с NumPy»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Learn AI with Python?

Да. Каждый урок Learn AI with Python включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Создание массивов и их свойства
  2. Индексация, срезы и расширенная индексация
  3. Распространение и векторизованные операции
  4. Линейная алгебра с NumPy
← Назад к Learn AI with Python