Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Язык Python в медицинских системах искусственного интеллекта. Ч.1. Введение в программирование на языке Python. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
15.08.2026
Размер:
853 Кб
Скачать

мер, сложение) приводят к их объединению (конкатенации). Такое поведение Numpy упрощает выполнение массовых вычислений и повышает производительность при работе с числовыми данными.

import numpy as np

# Два массива

a = np.array([1, 2, 3]) b = np.array([4, 5, 6])

# Поэлементное сложение c = a + b

print("Результат поэлементного сложения:", c) # [5 7 9]

#Сравнение со списками list_a = [1, 2, 3] list_b = [4, 5, 6]

#Конкатенация списков list_c = list_a + list_b

print("Результат конкатенации списков:", list_c) # [1, 2, 3, 4, 5, 6]

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

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

61

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

NumPy интегрируется с другими популярными библиотеками Python, такими как Pandas, Matplotlib и SciPy, что делает её основой для анализа данных и научных вычислений.

Основные часто используемые функции:

1.Операции создания массивов

np.array([1, 2, 3]) — создание массива из вручную прописанного списка.

np.zeros((n, m)) — создание массива nxm, заполненного нулями.

np.ones((n, m)) — создание массива nxm, заполненного единицами.

np.full((n, m), k) — создание массива nxm, заполненного числом k.

np.eye(n) — создание единичной матрицы 3x3.

np.arange(n, m, k)— массив от n до m с шагом k.

np.linspace(n, m, k) — массив из k равномерно распределённых значений от n до m.

np.random.rand(n, m) — массив nxm из случайных чисел от 0 до 1.

np.random.randint(n, m, (k, l)) — массив kxl из случайных целых чисел от n до m.

2.Операции над массивами

np.add(x, y) — (x + y), поэлементное сложение.

np.subtract(x, y) — (x - y), поэлементное вычитание.

np.multiply(x, y) — (x

* y), поэлементное умножение.

np.divide(x, y) — (x /

y), поэлементное деление.

np.power(x, y) — (x ^ y), поэлементное возведение в степень.

62

np.sqrt(x) — поэлементный квадратный корень.

np.exp(x) — поэлементное вычисление экспоненты.

np.log(x) — поэлементный натуральный логарифм.

np.log10(x) — поэлементный десятичный логарифм.

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

np.mean(x) — среднее значение элементов массива.

np.median(x) — медиана массива.

np.var(x) — дисперсия массива.

np.std(x) — стандартное отклонение.

np.min(x) и np.max(x) — минимальное и максимальное значения массива.

np.percentile(x, q) — q-тый перцентиль массива.

np.corrcoef(x, y) — коэффициент корреляции Пирсона между массивами x и y.

np.histogram(x, bins=10) — вычисление гистограммы значений массива x с числом корзин bins.

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

np.dot(x, y) — скалярное произведение векторов или матричное умножение.

np.matmul(x, y) — матричное умножение (для матриц).

np.transpose(x) — транспонирование массива.

np.linalg.inv(x) — обратная матрица.

np.linalg.det(x) — определитель матрицы.

np.linalg.eig(x) — собственные значения и собственные векторы матрицы.

np.linalg.norm(x) — вычисление нормы вектора или матрицы.

np.trace(x) — след матрицы (сумма элементов на диагонали).

5.Работа с многомерными массивами

x.shape — возвращает размерности массива.

x.reshape((2, 3)) — изменение формы массива на 2x3.

x.flatten() — преобразование массива в одномерный.

np.concatenate((a, b), axis=0) —объединение массивов по оси (вертикально, если axis=0, или горизонтально, если axis=1).

63

np.split(x, [2, 4], axis=0) — разбиение массива по индек-

сам 2 и 4.

np.expand_dims(x, axis=0) — добавление новой оси.

np.squeeze(x) — удаление осей размером 1.

6.Сравнение и логические операции

np.equal(x, y) — поэлементное сравнение на равенство.

np.not_equal(x, y) — поэлементное сравнение на неравенство.

np.greater(x, y), np.greater_equal(x, y) — поэлемент-

ное сравнение на больше (больше или равно).

np.less(x, y), np.less_equal(x, y) — поэлементное срав-

нение на меньше (меньше или равно).

np.logical_and(x > 0, x < 10) — логическое И по условиям.

np.logical_or(x == 0, x == 1) — логическое ИЛИ по усло-

виям.

np.where(x > 0, x, 0) — условное замещение: если x > 0, оставляет значение x, иначе ставит 0.

7.Специальные функции

np.unique(x) — возвращает уникальные значения в массиве.

np.sort(x)— сортирует элементы массива.

np.argsort(x) — возвращает индексы сортировки массива.

np.argmin(x) и np.argmax(x) — индексы минимального и максимального элемента.

np.cumsum(x) — накопительная сумма.

np.cumprod(x) — накопительное произведение.

8.Генерация случайных чисел (модуль numpy.random)

np.random.rand(d0, d1, ...) — массив заданной формы из случайных чисел от 0 до 1.

np.random.randint(low, high, size) — случайные целые числа в диапазоне от low до high заданного размера.

np.random.normal(mean, std, size) — выборка из нормаль-

ного распределения с заданным средним и стандартным отклонением.

64

np.random.choice(x, size, replace=False) — случайная выборка элементов из массива x без замены (или с заменой, если replace=True).

9.Вычисление расстояний и метрических функций

np.linalg.norm(x - y) — Евклидово расстояние между векторами x и y.

np.dot(x, y) — скалярное произведение для векторов.

np.cross(x, y) — векторное произведение для векторов.

10.Работа с NaN и Inf

np.isnan(x) — возвращает массив булевых значений: True, если элемент NaN.

np.isinf(x) — возвращает массив булевых значений: True, если элемент бесконечность.

np.nan_to_num(x) — заменяет NaN на 0, а Inf на большое конечное значение.

4.6. Math

Библиотека Math в Python является мощным инструментом для работы с математическими вычислениями, предоставляя широкий спектр функций, которые облегчают работу с числами и выражениями. Она была разработана для выполнения базовых и более сложных операций, требующих высокой точности и эффективности, что делает её ключевым компонентом при разработке научных, инженерных и аналитических приложений.

Библиотеки Math и Numpy в Python обе предназначены для работы с числами и математическими операциями, однако они имеют различные особенности, которые делают их более подходящими для разных типов задач. Эти библиотеки не являются прямыми конкурентами, а скорее дополняют друг друга, предоставляя разные уровни абстракции и функциональности.

MathявляетсястандартнойбиблиотекойPython,чтоделаетеёудобной и доступной в любой установке Python без дополнительных зависимостей. Она ориентирована на работу с одиночными числами и предостав-

65

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

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

сбольшими массивами чисел, что делает её особенно полезной в области научных вычислений, обработки данных и машинного обучения. В Numpy также есть дополнительные функции для работы с комплексными числами, случайными числами и специализированными типами данных, что делает её более гибкой в контексте вычислений на больших наборах данных.

Сдругой стороны, numpy имеет более высокий уровень абстракции, что может повлиять на производительность в простых задачах, где достаточно возможностей Math . Например, для одноразовых вычислений

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

Таким образом, выбор между Math и Numpy зависит от контекста задачи. Если требуется быстрое выполнение простых операций с числами, то лучше использовать Math . В случае, когда нужно работать с большими массивами данных или выполнять сложные многомерные вычисления, Numpy будет предпочтительнее благодаря своей мощности и возможностям работы с массивами.

Основные часто используемые функции:

1.Математические функции

math.sqrt(x) — возвращает квадратный корень из x.

math.pow(x, y) — возводит x в степень y.

math.exp(x) — возвращает значение экспоненты e в степени x.

66

math.log(x[, base]) — возвращает логарифм x по основанию base. Если base не указан, вычисляется натуральный логарифм.

math.log10(x) — возвращает десятичный логарифм x.

math.log2(x) — возвращает логарифм x по основанию 2.

math.factorial(x) — возвращает факториал x.

2.Тригонометрические функции

math.sin(x) —возвращаетсинусx,гдеxуказываетсяврадианах.

math.cos(x) — возвращает косинус x.

math.tan(x) — возвращает тангенс x.

math.asin(x) — возвращает арксинус x.

math.acos(x) — возвращает арккосинус x.

math.atan(x) — возвращает арктангенс x.

math.atan2(y, x) — возвращает арктангенс y/x, учитывая знаки x и y для определения правильного квадранта.

3.Гиперболические функции

math.sinh(x) — возвращает гиперболический синус x.

math.cosh(x) — возвращает гиперболический косинус x.

math.tanh(x) — возвращает гиперболический тангенс x.

math.asinh(x) — возвращает гиперболический арксинус x.

math.acosh(x) — возвращает гиперболический арккосинус x.

math.atanh(x) — возвращает гиперболический арктангенс x.

4.Константы

math.pi — значение числа π (приблизительно 3.14159).

math.e — значение числа e (приблизительно 2.71828).

math.tau — значение τ (та, равно 2π).

math.inf — бесконечность.

math.nan — "не число" (NaN), используется для обозначения неопределенных значений.

5.Функции для работы с округлением и целыми числами

math.ceil(x) — округляет x вверх до ближайшего целого числа.

math.floor(x) — округляет x вниз до ближайшего целого числа.

math.trunc(x) — обрезает дробную часть x, возвращая его целую часть.

67

math.fabs(x) — возвращает модуль числа x.

math.fmod(x, y) — возвращает остаток от деления x на y.

math.gcd(x, y) — находит наибольший общий делитель (НОД) чисел x и y.

6.Функции для работы с плавающей запятой

math.isfinite(x) —проверяет,являетсялиxконечнымчислом.

math.isinf(x) — проверяет, является ли x бесконечностью.

math.isnan(x) — проверяет, является ли x NaN.

math.modf(x) — возвращает дробную и целую части числа x как два отдельных значения.

4.7. Pandas

Pandas — это библиотека Python, предназначенная для работы с табличными данными и временными рядами. Её основное назначение — упрощение процесса анализа данных засчёт удобных инструментов для манипуляции и обработки больших объёмов информации. В центре работы Pandas находятся две ключевые структуры данных: DataFrame и Series. DataFrame представляет собой двумерную таблицу, аналогичную электронным таблицам или SQL-таблицам, а Series — это одномерная структура, похожая на столбец в таблице.

ОднимизнаиболеезначимыхпреимуществPandasявляетсяеёспособность работать с различными форматами данных. Это может быть текстовый файл, электронная таблица Excel, база данных SQL, JSON или даже данные, полученные из веб-ресурсов. Библиотека предоставляет функции для быстрого чтения и записи таких данных, что упрощает их интеграцию в любой проект.

Важной особенностью Pandas является её мощное средство для работы с индексами. Индексы делают доступ к данным более эффективным и позволяют легко выполнять сложные операции, такие как объединение, фильтрация, выборка по условиям или сортировка. Кроме того, Pandas предоставляет удобные методы для группировки данных, что позволяет выполнять агрегирующие операции над их подмножествами. Также Pandas удобен в обработке данных, содержащих пропущенные значения. В реальном мире данные часто бывают неполными, и Pandas

68

предлагает инструменты для их заполнения, удаления или анализа, позволяя работать с такими наборами без потери производительности или точности.

Библиотека также поддерживает гибкую работу с временными рядами, предоставляя встроенные функции для работы с датами и временем. Это включает в себя создание временных индексов, ресемплирование, обработку данных по определённым временным интервалам и выполнение статистических операций над ними.

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

В Pandas существует понятие axis, которое используется для указания, по какому измерению (оси) применять операции или функции. Это важно при работе с DataFrame и Series, поскольку они имеют двухмерную структуру (строки и столбцы). При указании axis=0, действие выполняется по строкам (вдоль столбцов), ось 0 обозначает вертикальное направление. При написании axis=1 – действие выполняется по столбцам (вдоль строк), ось 1 обозначает горизонтальное направление. На рисунке 4.7.1 изображено визуальное представление DataFrame:

Рис. 4.7.1 – схема наименования осей в Pandas структурах

Основные часто используемые функции:

1.основные структуры данных

pd.Series — одномерный массив, который может хранить данные разных типов (например, числа или строки) и имеет индекс.

69

pd.DataFrame — двумерная таблица данных с метками по строкам и столбцам, схожая с таблицей Excel. Это основная структура для работы с табличными данными.

Пример создания:

import pandas as pd

# Создание Series

s = pd.Series([1, 3, 5, None, 6])

# Создание DataFrame

data = {'A': [1, 2, 3], 'B': [4, 5, 6]} df = pd.DataFrame(data)

2.загрузка и сохранение данных

pd.read_csv('file.csv') — чтение CSV файла.

pd.read_excel('file.xlsx') — чтение Excel файла.

pd.read_json('file.json') — чтение JSON файла.

df.to_csv('file.csv') — сохранение DataFrame в CSV.

df.to_excel('file.xlsx') — сохранение DataFrame в Excel.

df.to_json('file.json') — сохранение DataFrame в JSON.

3.изучение и информация о данных

df.head(n) — показывает первые n строк.

df.tail(n) — показывает последние n строк.

df.info() — сводная информация о DataFrame (количество строк, столбцов, типы данных и т.д.).

df.describe() — базовая статистика по числовым столбцам (среднее, стандартное отклонение и т.д.).

df.shape — размерность DataFrame (число строк и столбцов).

df.columns — список названий столбцов.

df.index — индексы строк.

4.индексация и выборка данных

df['column_name'] — выбор столбца по названию.

df[['col1', 'col2']] — выбор нескольких столбцов.

df.loc[0] — выбор строки по метке.

df.iloc[0] — выбор строки по индексу.

70

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]