Математические операции и линейная алгебра в NumPy

NumPy предоставляет широкий спектр функций для выполнения математических операций и линейной алгебры, что делает его мощным инструментом для числовых вычислений. Рассмотрим ключевые аспекты работы с математическими операциями и линейной алгеброй в NumPy.

Математические операции

Арифметические операции

NumPy выполняет арифметические операции поэлементно. Это означает, что операции применяются к каждому элементу массива независимо:

  • Сложение, вычитание, умножение, деление и возведение в степень:

    import numpy as np
    
    a = np.array([1, 2, 3, 4])
    b = np.array([5, 6, 7, 8])
    
    # Сложение
    addition = a + b  # array([ 6,  8, 10, 12])
    
    # Вычитание
    subtraction = a - b  # array([-4, -4, -4, -4])
    
    # Умножение
    multiplication = a * b  # array([ 5, 12, 21, 32])
    
    # Деление
    division = a / b  # array([0.2, 0.33333333, 0.42857143, 0.5])
    
    # Возведение в степень
    power = a ** 2  # array([ 1,  4,  9, 16])

Универсальные функции (ufunc)

Универсальные функции (ufunc) предоставляют функции для выполнения операций, таких как:

  • Тригонометрические функции:

    x = np.array([0, np.pi/2, np.pi])
    sin_x = np.sin(x)  # array([0., 1., 0.])
    cos_x = np.cos(x)  # array([ 1.,  0., -1.])
  • Экспоненциальные и логарифмические функции:

    y = np.array([1, 2, 3])
    exp_y = np.exp(y)  # array([ 2.71828183,  7.3890561 , 20.08553692])
    log_y = np.log(y)  # array([0.        , 0.69314718, 1.09861229])
  • Корень и модуль:

    sqrt_y = np.sqrt(y)  # array([1.        , 1.41421356, 1.73205081])
    abs_y = np.abs(np.array([-1, -2, 3]))  # array([1, 2, 3])

Статистические функции

Функции для вычисления статистических характеристик:

  • Среднее, медиана, стандартное отклонение:

    data = np.array([1, 2, 3, 4, 5])
    
    mean_data = np.mean(data)  # 3.0
    median_data = np.median(data)  # 3.0
    std_data = np.std(data)  # 1.4142135623730951
  • Минимум и максимум, процентиль:

    min_data = np.min(data)  # 1
    max_data = np.max(data)  # 5
    percentile_25 = np.percentile(data, 25)  # 2.0

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

Матричные операции

  • Умножение матриц:

    A = np.array([[1, 2], [3, 4]])
    B = np.array([[5, 6], [7, 8]])
    matrix_product = np.dot(A, B)  # array([[19, 22], [43, 50]])

    Или используя оператор @:

    matrix_product = A @ B  # array([[19, 22], [43, 50]])
  • Транспонирование матриц:

    transposed = A.T  # array([[1, 3], [2, 4]])
  • Обратная матрица:

    inv_A = np.linalg.inv(A)  # array([[-2. ,  1. ], [ 1.5, -0.5]])
  • Определитель матрицы:

    det_A = np.linalg.det(A)  # -2.0000000000000004
  • Собственные значения и собственные векторы:

    eigenvalues, eigenvectors = np.linalg.eig(A)

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

  • Решение системы уравнений (Ax = b):

    A = np.array([[3, 2], [1, 2]])
    b = np.array([7, 4])
    solution = np.linalg.solve(A, b)  # array([1., 2.])

Факторизация

  • LU-разложение:

    from scipy.linalg import lu
    
    A = np.array([[1, 2], [3, 4]])
    P, L, U = lu(A)
  • SVD (Сингулярное разложение):

    U, s, Vh = np.linalg.svd(A)

Нормы и расстояния

  • Евклидова норма:

    norm = np.linalg.norm(A)  # 5.477225575051661
  • Расстояние между двумя векторами:

    x = np.array([1, 2])
    y = np.array([3, 4])
    distance = np.linalg.norm(x - y)  # 2.8284271247461903

Заключение

NumPy предоставляет мощные инструменты для выполнения математических операций и линейной алгебры, которые оптимизированы для работы с большими объемами данных и сложными вычислениями. Эти функции обеспечивают высокую производительность и позволяют легко и эффективно решать широкий спектр задач в области численных вычислений и анализа данных.

Last updated