Список самых востребованных методов Numpy
NumPy является фундаментом для многих других научных библиотек и предоставляет обширные возможности для работы с многомерными массивами и матрицами. В этом конспекте мы охватим основные команды NumPy, которые являются ключевыми для понимания и эффективного использования библиотеки. Мы начнем с основ - импорта библиотеки и создания массивов, и продвинемся к более сложным операциям, таким как математические расчеты и манипуляции с массивами.
Импорт библиотеки
import numpy as np
Создание и инициализация массивов
Эта группа включает команды для создания новых массивов и их инициализации. Они позволяют генерировать массивы с определенными размерами, значениями и даже случайными числами. Эти команды являются основополагающими для работы с NumPy, так как большинство операций в библиотеке выполняется на массивах.
np.array
Создает массив NumPy.
arr = np.array([1, 2, 3, 4])
# Создаст массив [1 2 3 4]
np.zeros
Создает массив, заполненный нулями.
zeros_arr = np.zeros(3)
# Создаст массив [0. 0. 0.]
np.ones
Создает массив, заполненный единицами.
ones_arr = np.ones(4)
# Создаст массив [1. 1. 1. 1.]
np.linspace
Создает равномерно распределенные значения в заданном интервале.
linspace_arr = np.linspace(0, 1, 5)
# Создает массив с 5 равномерно распределенными значениями от 0 до 1.
# [0. 0.25 0.5 0.75 1. ]
np.arange
Создает массив с арифметической последовательностью значений.
arange_arr = np.arange(1, 6)
# Создает массив с арифметической последовательностью от 1 до 5.
# [1 2 3 4 5]
np.random.rand
Генерирует случайные числа из равномерного распределения.
random_values = np.random.rand(3)
# Генерирует 3 случайных значения от 0 до 1.
np.random.randn
Генерирует случайные числа из стандартного нормального распределения.
random_values = np.random.randn(3)
# Генерирует 3 случайных значения из стандартного нормального распределения.
np.random.randint
Генерирует случайные целые числа в заданном интервале.
random_integers = np.random.randint(1, 10, size=5)
# Генерирует 5 случайных целых чисел от 1 до 9.
Изменение формы и размеров
Команды в этой группе используются для изменения формы существующих массивов, их объединения или разделения. Они позволяют манипулировать размерами и структурой массивов, что является важной частью обработки данных и подготовки их для анализа или визуализации.
np.reshape
Изменяет форму массива.
arr = np.array([1, 2, 3, 4, 5, 6])
reshaped_arr = arr.reshape(2, 3)
# Переформирует массив в матрицу 2x3:
# [[1 2 3]
# [4 5 6]]
np.concatenate
Объединяет массивы.
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
concatenated_arr = np.concatenate((arr1, arr2))
# Объединяет arr1 и arr2 в один массив:
# [1 2 3 4 5 6]
np.transpose
Транспонирует массив.
arr = np.array([[1, 2], [3, 4]])
transposed_arr = np.transpose(arr)
# Транспонирует массив:
# [[1 3]
# [2 4]]
np.vstack
Объединяет массивы вертикально (по строкам).
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
stacked_arr = np.vstack((arr1, arr2))
# Объединяет arr1 и arr2 вертикально:
# [[1 2 3]
# [4 5 6]]
np.hstack
Объединяет массивы горизонтально (по столбцам).
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
stacked_arr = np.hstack((arr1, arr2))
# Объединяет arr1 и arr2 горизонтально:
# [1 2 3 4 5 6]
np.split
Разделяет массив на подмассивы.
arr = np.array([1, 2, 3, 4, 5, 6])
sub_arrays = np.split(arr, 3)
# Разделяет arr на 3 подмассива:
# [1 2] [3 4] [5 6]
Математические операции
В эту группу входят команды для выполнения математических операций на элементах массивов, включая тригонометрические функции, экспоненциальные и логарифмические вычисления. Эти функции широко используются в научных и инженерных расчетах, а также в анализе данных.
np.dot
Выполняет матричное умножение.
arr1 = np.array([[1, 2], [3, 4]])
arr2 = np.array([2, 3])
result = np.dot(arr1, arr2)
# Выполняет умножение матрицы arr1 на вектор arr2:
# [8 18]
np.exp
Вычисляет экспоненту (e^x) для каждого элемента массива.
arr = np.array([1, 2, 3])
exp_values = np.exp(arr)
# Вычисляет экспоненту для каждого элемента массива:
# [ 2.71828183 7.3890561 20.08553692]
np.log
Вычисляет натуральный логарифм (ln(x)) для каждого элемента массива.
arr = np.array([1, 2, 3])
log_values = np.log(arr)
# Вычисляет натуральный логарифм для каждого элемента массива:
# [0. 0.69314718 1.09861229]
np.sin
Вычисляет синус для каждого элемента массива.
arr = np.array([0, np.pi / 2, np.pi])
sin_values = np.sin(arr)
# Вычисляет синус для каждого элемента массива:
# [0.0000000e+00 1.0000000e+00 1.2246468e-16]
np.cos
Вычисляет косинус для каждого элемента массива.
arr = np.array([0, np.pi / 2, np.pi])
cos_values = np.cos(arr)
# Вычисляет косинус для каждого элемента массива:
# [1.0000000e+00 6.123234e-17 -1.0000000e+00]
np.tan
Вычисляет тангенс для каждого элемента массива.
arr = np.array([0, np.pi / 4, np.pi / 2])
tan_values = np.tan(arr)
# Вычисляет тангенс для каждого элемента массива:
# [0.0000000e+00 1.0000000e+00 1.63312394e+16]
np.sqrt
Вычисляет квадратный корень для каждого элемента массива.
arr = np.array([1, 4, 9])
sqrt_values = np.sqrt(arr)
# Вычисляет квадратный корень для каждого элемента массива:
# [1. 2. 3.]
Статистические вычисления
Команды этой группы охватывают расчеты статистических показателей, таких как среднее значение, стандартное отклонение, дисперсия, минимальное и максимальное значения. Они необходимы для анализа и интерпретации данных, что делает их ключевыми в области анализа данных и статистики.
np.mean
Вычисляет среднее значение элементов массива.
arr = np.array([1, 2, 3, 4, 5])
mean_value = np.mean(arr)
# Вычисляет среднее значение элементов массива:
# 3.0
np.sum
Суммирует элементы массива.
arr = np.array([1, 2, 3, 4, 5])
sum_value = np.sum(arr)
# Суммирует элементы массива:
# 15
np.std
Вычисляет стандартное отклонение.
arr = np.array([1, 2, 3, 4, 5])
std_value = np.std(arr)
# Вычисляет стандартное отклонение элементов массива:
# 1.4142135623730951
np.var
Вычисляет дисперсию (вариацию) элементов массива.
arr = np.array([1, 2, 3, 4, 5])
var_value = np.var(arr)
# Вычисляет дисперсию элементов массива:
# 2.5
np.min
Находит минимальное значение в массиве.
arr = np.array([1, 2, 3, 4, 5])
min_value = np.min(arr)
# Находит минимальное значение в массиве:
# 1
np.max
Находит максимальное значение в массиве.
arr = np.array([1, 2, 3, 4, 5])
max_value = np.max(arr)
# Находит максимальное значение в массиве:
# 5
np.argmin
Находит индекс минимального значения в массиве.
arr = np.array([5, 2, 8, 1, 7])
argmin_value = np.argmin(arr)
# Находит индекс минимального значения в массиве:
# 3
np.argmax
Находит индекс максимального значения в массиве.
arr = np.array([5, 2, 8, 1, 7])
argmax_value = np.argmax(arr)
# Находит индекс максимального значения в массиве:
# 2
np.percentile
Вычисляет персентили для заданных данных.
data = np.array([1, 2, 3, 4, 5])
percentile_25 = np.percentile(data, 25)
# Вычисляет 25-й процентиль данных.
# 2.0
np.histogram
Вычисляет гистограмму данных.
data = np.array([1, 2, 2, 3, 3, 3, 4, 4, 4, 4])
hist, bins = np.histogram(data, bins=[1, 2, 3, 4, 5])
# Вычисляет гистограмму данных с указанными интервалами.
# [1 3 4 2]
Поиск и сортировка
Эта группа включает команды для поиска элементов в массивах, их сортировки, удаления или вставки. Они играют важную роль в организации данных, их эффективном хранении и быстром доступе к ним.
np.argsort
Возвращает индексы элементов в отсортированном порядке.
arr = np.array([5, 2, 8, 1, 7])
sorted_indices = np.argsort(arr)
# Возвращает индексы элементов в отсортированном порядке:
# [3 1 4 0 2]
np.where
Возвращает индексы элементов, где заданное условие выполняется.
arr = np.array([1, 2, 3, 4, 5])
indices = np.where(arr > 2)
# Возвращает индексы элементов, где значение больше 2:
# (array([2, 3, 4]),)
np.unique
Возвращает уникальные элементы в массиве.
arr = np.array([1, 2, 2, 3, 4, 4, 4])
unique_values = np.unique(arr)
# Возвращает уникальные элементы в массиве:
# [1 2 3 4]
np.clip
Ограничивает значения в массиве в заданном диапазоне.
arr = np.array([1, 2, 3, 4, 5])
clipped_arr = np.clip(arr, 2, 4)
# Ограничивает значения в массиве от 2 до 4:
# [2 2 3 4 4]
np.roll
Перемещает элементы массива на заданное количество позиций.
arr = np.array([1, 2, 3, 4, 5])
rolled_arr = np.roll(arr, 2)
# Перемещает элементы массива на 2 позиции:
# [4 5 1 2 3]
np.searchsorted
Находит место для вставки элемента в упорядоченном массиве.
sorted_arr = np.array([1, 2, 4, 5, 6])
index = np.searchsorted(sorted_arr, 3)
# Находит индекс для вставки элемента 3 в упорядоченный массив.
# 2
np.sort
Сортирует элементы массива.
arr = np.array([5, 2, 8, 1, 7])
sorted_arr = np.sort(arr)
# Сортирует элементы массива в порядке возрастания.
# [1 2 5 7 8]
np.delete
Удаляет элементы из массива.
arr = np.array([1, 2, 3, 4, 5])
new_arr = np.delete(arr, 2)
# Удаляет элемент с индексом 2 из массива.
# [1 2 4 5]
np.insert
Вставляет элемент в массив.
arr = np.array([1, 2, 3, 4, 5])
new_arr = np.insert(arr, 2, 10)
# Вставляет значение 10 на позицию с индексом 2 в массив.
# [ 1 2 10 3 4 5]
np.setdiff1d
Находит разницу между двумя массивами.
arr1 = np.array([1, 2, 3, 4, 5])
arr2 = np.array([3, 4, 5, 6, 7])
diff_arr = np.setdiff1d(arr1, arr2)
# Находит элементы, которые есть в arr1, но отсутствуют в arr2.
# [1 2]
Линейная алгебра
Команды, относящиеся к линейной алгебре, включают операции над матрицами и векторами, такие как вычисление определителя, обратной матрицы, собственных значений и векторов. Они широко используются в различных областях, от физики до машинного обучения.
np.fft.fft
Выполняет быстрое преобразование Фурье (FFT) для заданного сигнала.
signal = np.array([1, 2, 1, -1, 1])
fft_result = np.fft.fft(signal)
# Выполняет FFT для сигнала и возвращает комплексные частоты.
# [ 4. +0.j 0.5+1.53884177j -2.5+1.93649167j -2.5-1.93649167j
# 0.5-1.53884177j]
np.linalg.inv
Вычисляет обратную матрицу.
matrix = np.array([[2, 1], [1, 3]])
inv_matrix = np.linalg.inv(matrix)
# [[ 1.28571429 -0.42857143]
# [-0.42857143 0.28571429]]
np.linalg.det
Вычисляет определитель матрицы.
matrix = np.array([[2, 1], [1, 3]])
det_value = np.linalg.det(matrix)
# 5.0
np.linalg.eig
Вычисляет собственные значения и собственные векторы матрицы.
matrix = np.array([[2, 1], [1, 3]])
# Вычисляет собственные значения
# [1. 4.]
eigenvalues, eigenvectors = np.linalg.eig(matrix)
# Вычисляет собственные векторы матрицы.
#[[-0.70710678 -0.4472136 ]
# [ 0.70710678 -0.89442719]]
Корреляционные вычисления
Эти команды используются для вычисления статистических связей и зависимостей между различными наборами данных. Они включают функции для вычисления корреляций, ковариаций и аппроксимации данных полиномами.
np.correlate
Вычисляет корреляцию между двумя последовательностями.
signal1 = np.array([1, 2, 3, 2, 1])
signal2 = np.array([1, 0, -1])
correlation_result = np.correlate(signal1, signal2, mode='valid')
# [2]
np.cov
Вычисляет ковариационную матрицу для набора данных.
data = np.array([[1, 2, 3], [2, 3, 4], [3, 4, 5]])
cov_matrix = np.cov(data)
# [[1. 1. 1.]
# [1. 1. 1.]
# [1. 1. 1.]]
np.polyfit
Вычисляет коэффициенты полинома, соответствующего заданным данным.
x = np.array([1, 2, 3, 4, 5])
y = np.array([2, 4, 6, 8, 10])
coefficients = np.polyfit(x, y, 1)
# Вычисляет коэффициенты линейной аппроксимации.
# [ 2. 0.]
Дополнительно
В эту группу входят дополнительные команды, которые могут быть полезны в специализированных случаях, такие как работа с отсутствующими или некорректными значениями (NaN), интерполяция данных и другие.
np.interp
Выполняет интерполяцию для заданных данных.
x = np.array([1, 2, 3, 4, 5])
y = np.array([10, 20, 30, 40, 50])
interpolated_value = np.interp(2.5, x, y)
# 25.0
np.nan
Обозначает "Not a Number" (NaN), используется для представления отсутствующих или некорректных значений.
Заключение
Мы достигли конца нашего путешествия по основам NumPy. В этом конспекте мы рассмотрели широкий спектр команд, начиная с базового создания массивов и заканчивая более сложными операциями, такими как линейная алгебра и статистические расчеты. NumPy является неотъемлемым инструментом в арсенале каждого специалиста по данным и программиста, работающего с Python.