Список самых востребованных методов 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.0np.sum
Суммирует элементы массива.
 arr = np.array([1, 2, 3, 4, 5]) 
 sum_value = np.sum(arr) 
 # Суммирует элементы массива: 
 # 15np.std
Вычисляет стандартное отклонение.
arr = np.array([1, 2, 3, 4, 5]) 
std_value = np.std(arr) 
# Вычисляет стандартное отклонение элементов массива: 
# 1.4142135623730951np.var
Вычисляет дисперсию (вариацию) элементов массива.
arr = np.array([1, 2, 3, 4, 5]) 
var_value = np.var(arr) 
# Вычисляет дисперсию элементов массива: 
# 2.5np.min
Находит минимальное значение в массиве.
arr = np.array([1, 2, 3, 4, 5]) 
min_value = np.min(arr) 
# Находит минимальное значение в массиве: 
# 1np.max
Находит максимальное значение в массиве.
arr = np.array([1, 2, 3, 4, 5]) 
max_value = np.max(arr) 
# Находит максимальное значение в массиве: 
# 5np.argmin
Находит индекс минимального значения в массиве.
arr = np.array([5, 2, 8, 1, 7]) 
argmin_value = np.argmin(arr) 
# Находит индекс минимального значения в массиве: 
# 3np.argmax
Находит индекс максимального значения в массиве.
arr = np.array([5, 2, 8, 1, 7]) 
argmax_value = np.argmax(arr) 
# Находит индекс максимального значения в массиве: 
# 2np.percentile
Вычисляет персентили для заданных данных.
data = np.array([1, 2, 3, 4, 5]) 
percentile_25 = np.percentile(data, 25) 
# Вычисляет 25-й процентиль данных. 
# 2.0np.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 в упорядоченный массив. 
# 2np.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.0np.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.0np.nan
Обозначает "Not a Number" (NaN), используется для представления отсутствующих или некорректных значений.
Заключение
Мы достигли конца нашего путешествия по основам NumPy. В этом конспекте мы рассмотрели широкий спектр команд, начиная с базового создания массивов и заканчивая более сложными операциями, такими как линейная алгебра и статистические расчеты. NumPy является неотъемлемым инструментом в арсенале каждого специалиста по данным и программиста, работающего с Python.