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

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Наша система гарантирует сдачу работы к сроку без плагиата. Правки вносим бесплатно.
Основные структуры данных в NumPy
NumPy (Numerical Python) – это библиотека для языка программирования Python, которая предоставляет удобные и эффективные структуры данных для работы с числовыми массивами и матрицами. Основными структурами данных в NumPy являются:
Массивы (Arrays)
Массивы в NumPy представляют собой многомерные контейнеры, которые могут содержать элементы одного типа данных. Они предоставляют эффективные операции для работы с данными, такие как математические операции, индексацию и срезы. Массивы в NumPy могут иметь различные размерности, от одномерных до многомерных.
Матрицы (Matrices)
Матрицы в NumPy являются двумерными массивами, которые предоставляют удобные операции для работы с линейной алгеброй, такие как умножение матриц, нахождение определителя и решение систем линейных уравнений. Матрицы в NumPy могут быть созданы из двумерных массивов или с использованием специальных функций.
Структурированные массивы (Structured Arrays)
Структурированные массивы в NumPy позволяют хранить и обрабатывать данные различных типов, объединенных в одной структуре. Это удобно, когда необходимо работать с таблицами данных, где каждая колонка имеет свой тип данных. Структурированные массивы в NumPy предоставляют возможность обращаться к данным по именам полей и выполнять операции над ними.
Маски (Masks)
Маски в NumPy позволяют фильтровать данные в массивах на основе определенных условий. Маски представляют собой булевы массивы, где каждый элемент указывает, соответствует ли условие или нет. Маски могут быть использованы для выбора определенных элементов массива или для применения операций только к определенным элементам.
Основные структуры данных в NumPy предоставляют мощные возможности для работы с числовыми данными. Они позволяют эффективно хранить, обрабатывать и анализировать массивы и матрицы, что делает NumPy одной из наиболее популярных библиотек для научных вычислений в Python.
Операции с массивами в NumPy
NumPy предоставляет множество операций для работы с массивами. Они позволяют выполнять различные математические операции, изменять форму массивов, применять функции к элементам массивов и многое другое.
Математические операции
NumPy позволяет выполнять математические операции над массивами, включая сложение, вычитание, умножение и деление. Операции выполняются поэлементно, то есть каждый элемент одного массива соответствует элементу другого массива.
“`python
import numpy as np
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = a + b # сложение
d = a – b # вычитание
e = a * b # умножение
f = a / b # деление
print(c) # [5 7 9]
print(d) # [-3 -3 -3]
print(e) # [4 10 18]
print(f) # [0.25 0.4 0.5]
“`
Изменение формы массивов
NumPy позволяет изменять форму массивов с помощью функции `reshape()`. Эта функция позволяет изменить размерность массива, сохраняя при этом все его элементы.
“`python
import numpy as np
a = np.array([1, 2, 3, 4, 5, 6])
b = a.reshape((2, 3))
print(b)
# [[1 2 3]
# [4 5 6]]
“`
Применение функций к элементам массивов
NumPy позволяет применять различные функции к элементам массивов с помощью функции `apply_along_axis()`. Эта функция позволяет применить заданную функцию к каждому элементу массива, возвращая новый массив с результатами.
“`python
import numpy as np
a = np.array([1, 2, 3, 4, 5, 6])
def square(x):
return x ** 2
b = np.apply_along_axis(square, 0, a)
print(b) # [ 1 4 9 16 25 36]
“`
Это лишь некоторые из операций, которые можно выполнять с массивами в NumPy. Библиотека предоставляет множество других функций и методов для работы с массивами, таких как сортировка, поиск минимального и максимального значения, нахождение суммы элементов и многое другое.
Индексация и срезы в NumPy
В библиотеке NumPy доступны различные способы индексации и срезов для работы с массивами. Индексация позволяет получить доступ к отдельным элементам массива, а срезы позволяют выбрать подмассивы из исходного массива.
Индексация одномерных массивов
Для индексации одномерных массивов в NumPy используется обычная квадратная скобка []. Индексация начинается с 0, то есть первый элемент массива имеет индекс 0, второй – индекс 1 и так далее.
“`python
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
print(arr[0]) # Выводит первый элемент массива (1)
print(arr[2]) # Выводит третий элемент массива (3)
“`
Индексация многомерных массивов
Для индексации многомерных массивов в NumPy используется несколько квадратных скобок []. Каждая пара скобок соответствует одному измерению массива. Индексация также начинается с 0.
“`python
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr[0, 0]) # Выводит первый элемент массива (1)
print(arr[1, 2]) # Выводит элемент массива во второй строке и третьем столбце (6)
“`
Срезы одномерных массивов
Для создания срезов одномерных массивов в NumPy используется двоеточие :. Срезы позволяют выбрать подмассивы из исходного массива.
“`python
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
print(arr[1:4]) # Выводит подмассив с индексами от 1 до 3 ([2, 3, 4])
print(arr[:3]) # Выводит подмассив с индексами от 0 до 2 ([1, 2, 3])
print(arr[2:]) # Выводит подмассив с индексами от 2 до конца ([3, 4, 5])
“`
Срезы многомерных массивов
Для создания срезов многомерных массивов в NumPy используется двоеточие : для каждого измерения. Срезы позволяют выбрать подмассивы из исходного массива.
“`python
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(arr[:2, 1:]) # Выводит подмассив с индексами от 0 до 1 для строк и от 1 до конца для столбцов ([[2, 3], [5, 6]])
print(arr[1:, :2]) # Выводит подмассив с индексами от 1 до конца для строк и от 0 до 1 для столбцов ([[4, 5], [7, 8]])
“`
Это лишь некоторые из возможностей индексации и срезов в NumPy. Библиотека предоставляет множество других функций и методов для работы с массивами, таких как индексация с помощью булевых массивов, индексация с помощью условий и многое другое.
Математические функции в NumPy
Библиотека NumPy предоставляет множество математических функций, которые могут быть применены к массивам. Эти функции позволяют выполнять различные операции, такие как вычисление суммы, нахождение минимального или максимального значения, вычисление среднего значения и многое другое.
Основные математические функции
В NumPy доступны все основные математические функции, такие как:
np.sin()
– вычисляет синус элементов массиваnp.cos()
– вычисляет косинус элементов массиваnp.tan()
– вычисляет тангенс элементов массиваnp.exp()
– вычисляет экспоненту элементов массиваnp.log()
– вычисляет натуральный логарифм элементов массиваnp.sqrt()
– вычисляет квадратный корень элементов массива
Статистические функции
NumPy также предоставляет множество статистических функций для работы с массивами. Некоторые из них:
np.mean()
– вычисляет среднее значение элементов массиваnp.median()
– вычисляет медиану элементов массиваnp.min()
– находит минимальное значение в массивеnp.max()
– находит максимальное значение в массивеnp.sum()
– вычисляет сумму элементов массива
Линейная алгебра
NumPy также предоставляет функции для работы с линейной алгеброй. Некоторые из них:
np.dot()
– вычисляет скалярное произведение двух массивовnp.transpose()
– транспонирует массивnp.linalg.inv()
– вычисляет обратную матрицуnp.linalg.det()
– вычисляет определитель матрицы
Это лишь некоторые из доступных математических функций в NumPy. Библиотека предоставляет множество других функций и методов для выполнения различных операций над массивами.
Работа с многомерными массивами в NumPy
NumPy предоставляет мощные инструменты для работы с многомерными массивами. Многомерные массивы в NumPy называются ndarray (N-dimensional array). Они представляют собой таблицы элементов одного типа, индексируемые кортежами целых чисел.
Создание многомерных массивов
Многомерные массивы можно создавать с помощью функции np.array()
или с помощью специальных функций, таких как np.zeros()
, np.ones()
и np.random()
.
Примеры создания многомерных массивов:
“`python
import numpy as np
# Создание двумерного массива
arr_2d = np.array([[1, 2, 3], [4, 5, 6]])
# Создание трехмерного массива
arr_3d = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
# Создание массива из нулей
zeros_arr = np.zeros((3, 4))
# Создание массива из единиц
ones_arr = np.ones((2, 3, 4))
# Создание массива со случайными значениями
random_arr = np.random.random((2, 3))
“`
Индексация и срезы многомерных массивов
Многомерные массивы в NumPy индексируются с помощью кортежей целых чисел. Каждое целое число в кортеже указывает индекс в соответствующем измерении массива.
Примеры индексации и срезов многомерных массивов:
“`python
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
# Индексация элемента
print(arr[0, 1]) # Выводит 2
# Срез по строке
print(arr[1, :]) # Выводит [4, 5, 6]
# Срез по столбцу
print(arr[:, 2]) # Выводит [3, 6, 9]
# Срез по обоим измерениям
print(arr[1:, :2]) # Выводит [[4, 5], [7, 8]]
“`
Операции с многомерными массивами
Многомерные массивы в NumPy поддерживают различные операции, такие как математические операции, операции сравнения и логические операции.
Примеры операций с многомерными массивами:
“`python
import numpy as np
arr1 = np.array([[1, 2], [3, 4]])
arr2 = np.array([[5, 6], [7, 8]])
# Сложение массивов
print(arr1 + arr2) # Выводит [[6, 8], [10, 12]]
# Умножение массивов
print(arr1 * arr2) # Выводит [[5, 12], [21, 32]]
# Сравнение массивов
print(arr1 > arr2) # Выводит [[False, False], [False, False]]
# Логические операции
print(np.logical_and(arr1 > 1, arr2 < 7)) # Выводит [[False, True], [True, True]]
```
Это лишь некоторые из возможностей работы с многомерными массивами в NumPy. Библиотека предоставляет множество других функций и методов для выполнения различных операций над многомерными массивами.
Примеры использования библиотеки NumPy
Создание массивов
NumPy позволяет создавать массивы различных размеров и типов данных. Например, можно создать одномерный массив:
“`python
import numpy as np
arr1 = np.array([1, 2, 3, 4, 5])
print(arr1) # Выводит [1 2 3 4 5]
“`
Также можно создать двумерный массив:
“`python
arr2 = np.array([[1, 2, 3], [4, 5, 6]])
print(arr2)
# Выводит:
# [[1 2 3]
# [4 5 6]]
“`
Математические операции
NumPy предоставляет множество математических функций для работы с массивами. Например, можно выполнить поэлементное сложение двух массивов:
“`python
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
result = arr1 + arr2
print(result) # Выводит [5 7 9]
“`
Также можно выполнить матричное умножение двух массивов:
“`python
arr1 = np.array([[1, 2], [3, 4]])
arr2 = np.array([[5, 6], [7, 8]])
result = np.dot(arr1, arr2)
print(result)
# Выводит:
# [[19 22]
# [43 50]]
“`
Индексация и срезы
NumPy позволяет обращаться к элементам массива по индексу и выполнять срезы. Например, можно получить элемент массива по индексу:
“`python
arr = np.array([1, 2, 3, 4, 5])
print(arr[2]) # Выводит 3
“`
Также можно выполнить срез массива:
“`python
arr = np.array([1, 2, 3, 4, 5])
print(arr[1:4]) # Выводит [2 3 4]
“`
Работа с многомерными массивами
NumPy позволяет работать с многомерными массивами. Например, можно получить сумму элементов по определенной оси:
“`python
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(np.sum(arr, axis=0)) # Выводит [5 7 9]
“`
Также можно транспонировать массив:
“`python
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(np.transpose(arr))
# Выводит:
# [[1 4]
# [2 5]
# [3 6]]
“`
Работа с файлами
NumPy позволяет считывать и записывать данные из файлов. Например, можно считать данные из CSV файла:
“`python
data = np.genfromtxt(‘data.csv’, delimiter=’,’)
print(data)
“`
Также можно записать данные в файл:
“`python
data = np.array([[1, 2, 3], [4, 5, 6]])
np.savetxt(‘data.csv’, data, delimiter=’,’)
“`
Это лишь некоторые примеры использования библиотеки NumPy. Библиотека предоставляет множество других функций и методов для работы с массивами и выполнения различных операций.
Расширенные возможности библиотеки NumPy
Библиотека NumPy предоставляет множество расширенных возможностей для работы с массивами и выполнения различных операций. Ниже приведены некоторые из них:
Бродкастинг (Broadcasting)
Бродкастинг – это механизм, который позволяет выполнять операции между массивами разных размерностей без необходимости явного повторения элементов. Например, можно сложить одномерный массив с двумерным массивом, и каждый элемент одномерного массива будет автоматически сложен с соответствующим столбцом двумерного массива.
Векторизация (Vectorization)
Векторизация – это процесс преобразования операций над массивами в операции над целыми массивами, что позволяет выполнять операции над массивами более эффективно и быстро. Вместо выполнения операций поэлементно, NumPy выполняет их над целыми массивами, что ускоряет вычисления.
Универсальные функции (Universal Functions)
Универсальные функции – это функции, которые могут применяться к элементам массива поэлементно. NumPy предоставляет множество универсальных функций, таких как sin, cos, exp, log и многие другие. Они позволяют выполнять математические операции над массивами без необходимости использования циклов.
Маскирование (Masking)
Маскирование – это процесс фильтрации элементов массива на основе определенного условия. NumPy позволяет создавать маски, которые указывают, какие элементы массива должны быть выбраны или исключены. Это очень полезно при выполнении операций с массивами, когда нужно выбрать только определенные элементы, удовлетворяющие определенному условию.
Линейная алгебра (Linear Algebra)
NumPy предоставляет множество функций для выполнения операций линейной алгебры, таких как умножение матриц, нахождение определителя, решение систем линейных уравнений и многое другое. Это делает библиотеку NumPy очень мощным инструментом для работы с линейной алгеброй.
Это лишь некоторые из расширенных возможностей библиотеки NumPy. Библиотека предоставляет еще множество других функций и методов, которые позволяют выполнять различные операции над массивами и решать разнообразные задачи.
Таблица сравнения библиотеки NumPy
Функция/Свойство | Описание | Пример |
---|---|---|
np.array() | Создает массив из указанных элементов | np.array([1, 2, 3]) |
np.zeros() | Создает массив из нулей указанной формы | np.zeros((2, 3)) |
np.ones() | Создает массив из единиц указанной формы | np.ones((3, 2)) |
np.arange() | Создает массив последовательных чисел | np.arange(0, 10, 2) |
np.reshape() | Изменяет форму массива | np.reshape(arr, (2, 3)) |
np.transpose() | Транспонирует массив | np.transpose(arr) |
np.sum() | Вычисляет сумму элементов массива | np.sum(arr) |
np.mean() | Вычисляет среднее значение элементов массива | np.mean(arr) |
np.max() | Находит максимальное значение в массиве | np.max(arr) |
np.min() | Находит минимальное значение в массиве | np.min(arr) |
Заключение
Библиотека NumPy является мощным инструментом для работы с массивами и математическими операциями в языке программирования Python. Она предоставляет удобные структуры данных, операции с массивами, индексацию и срезы, а также множество математических функций. Благодаря своей эффективности и простоте использования, NumPy широко применяется в научных и инженерных вычислениях, обработке данных и машинном обучении. Ознакомление с основными возможностями и примерами использования библиотеки NumPy позволит вам эффективно работать с массивами и выполнять сложные вычисления в Python.