Лекція 7. Організація наукових обчислень за допомогою пакета NumPy
Сайт: | Навчально-інформаційний портал НУБіП України |
Курс: | Кросплатформне програмування (Python) |
Книга: | Лекція 7. Організація наукових обчислень за допомогою пакета NumPy |
Надруковано: | Гість-користувач |
Дата: | субота, 7 червня 2025, 20:12 |
1. Встановлення пакету NumPy
NumPy (Numerical Python) — це бібліотека для високопродуктивних операцій з багатовимірними масивами та матрицями, яка також містить велику колекцію математичних функцій.
Команда для встановлення:
pip install numpy
Використання:
import numpy as np
Набір високошвидкісних рутин (функцій) для обробки масивів, включаючи:
-
математичні операції
-
логічні операції
-
зміни форми (shape manipulation)
-
сортування та фільтрацію
-
введення/виведення даних
-
дискретні перетворення Фур'є (DFT)
-
базову лінійну алгебру
-
статистичні обчислення
-
генерацію випадкових чисел та симуляції
Приклад використання:
import numpy as np
a = np.array([[1, 2], [3, 4]])
print(a.shape) # (2, 2)
print(a.dtype) # int64 (залежить від платформи)
Категорія | Приклади функцій |
---|---|
Математичні операції | np.sum , np.mean , np.exp , np.log |
Логічні операції | np.all , np.any , логічні маски |
Зміна форми | reshape , flatten , transpose |
Сортування і вибірка | sort , argsort , where , extract |
Лінійна алгебра | dot , matmul , inv , eig , det |
Статистика | mean , std , var , median |
Випадкові значення | np.random.rand , np.random.normal |
Перетворення Фур'є | np.fft.fft , np.fft.ifft |
Введення/виведення | np.loadtxt , np.savetxt , np.save , np.load |
2. Методи та функції пакету NumPy. Створення масивів. Операції над масивами.
Створення масивів
Функція | Опис | Приклад |
---|---|---|
np.array() |
Створює масив з Python-списку | np.array([1, 2, 3]) |
np.zeros(shape) |
Масив із нулями | np.zeros((2, 3)) |
np.ones(shape) |
Масив з одиницями | np.ones((3, 3)) |
np.empty(shape) |
Порожній масив (випадкові значення) | np.empty((2, 2)) |
np.arange(start, stop, step) |
Масив із кроком | np.arange(0, 10, 2) |
np.linspace(start, stop, num) |
Масив із рівними інтервалами | np.linspace(0, 1, 5) |
np.eye |
Одинична матриця (матриця Е) | np.eye(3) |
np.full(shape, value) |
Масив із заданим значенням | np.full((2, 2), 7) |
Математичні функції
Функція | Опис |
---|---|
np.add(a, b) |
Додавання поелементно |
np.subtract(a, b) |
Віднімання |
np.multiply(a, b) |
Множення |
np.divide(a, b) |
Ділення |
np.power(a, b) |
Піднесення до степеня |
np.sqrt(a) |
Квадратний корінь |
np.exp(a) |
Експонента |
np.log(a) |
Натуральний логарифм |
np.abs(a) |
Абсолютне значення |
np.round(a, n) |
Округлення до n знаків |
Функція | Опис |
---|---|
np.mean(a) |
Середнє значення |
np.median(a) |
Медіана |
np.std(a) |
Стандартне відхилення |
np.var(a) |
Дисперсія |
np.min(a) |
Мінімум |
np.max(a) |
Максимум |
np.sum(a) |
Сума елементів |
Операції з формою масиву
Метод/функція | Опис |
---|---|
a.shape |
Повертає розмір масиву |
a.reshape(newshape) |
Змінює форму |
a.flatten() |
Перетворює в 1D масив |
a.T |
Транспонування |
np.concatenate() |
Об’єднання масивів |
np.vstack() |
Вертикальне об’єднання |
np.hstack() |
Горизонтальне об’єднання |
np.split(a, n) |
Розбиття масиву на n частин |
Генерація випадкових чисел
np.random.seed(0) # Фіксація генератора
np.random.rand(3, 2) # Випадкові числа [0,1)
np.random.randint(1, 10, (2, 3)) # Цілі числа
np.random.normal(0, 1, (2, 2)) # Нормальний розподіл
Логічні операції
a = np.array([1, 2, 3, 4])
a > 2 # маска [False, False, True, True]
np.where(a > 2) # індекси, де умова істинна
np.any(a > 3) # чи є хоча б один True
np.all(a > 0) # чи всі > 0
3. Створення матриць та числових діапазонів.
У NumPy "матриця" — це, зазвичай, двовимірний масив (ndarray). Також існує клас np.matrix, але його використання не рекомендоване у нових проєктах — краще працювати з ndarray.
import numpy as np
# Двовимірний масив (матриця)
A = np.array([[1, 2], [3, 4]])
# Одинична матриця
I = np.eye(3)
# Матриця з нулями
Z = np.zeros((2, 3))
# Матриця з одиницями
O = np.ones((3, 2))
# Матриця з випадковими числами
R = np.random.rand(2, 2)
Створення числових діапазонів
Числовий діапазон цілих чисел.
np.arange(start, stop, step, dtype=None)
Відкрита верхня межа (stop не входить), як у range()
Числовий діапазон нецілих чисел.np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
Приклад:
x, h = np.linspace(0, 1, 5, retstep=True)
# x → [0. , 0.25, 0.5 , 0.75, 1. ]
# h → 0.25
np.logspace()
— логарифмічний (експоненціальний) крок
np.geomspace()
— геометрична прогресія
4. Дії з матрицями.
У NumPy
матрицею вважається двовимірний масив типу ndarray
. Наприклад:
import numpy as np
A = np.array([[1, 2], [3, 4]])
Таблиця з операціями нам матрицями:
№ | Операція | Опис | NumPy-функція / Приклад |
---|---|---|---|
1 | Транспонування | Заміна рядків на стовпці | A.T |
2 | Поелементне додавання | Сума відповідних елементів | A + B |
3 | Поелементне віднімання | Різниця відповідних елементів | A - B |
4 | Поелементне множення | Добуток відповідних елементів | A * B |
5 | Поелементне ділення | Частка відповідних елементів | A / B |
6 | Матричне множення | Алгебраїчне множення матриць | A @ B або np.dot(A, B) |
7 | Обернена матриця | , така що | np.linalg.inv(A) |
8 | Визначник (детермінант) | Число, що показує виродженість | np.linalg.det(A) |
9 | Ранг матриці | Кількість лінійно незалежних рядків/стовпців | np.linalg.matrix_rank(A) |
10 | Трасування | Сума елементів головної діагоналі | np.trace(A) |
11 | Норма матриці | "Довжина" або розмірність матриці | np.linalg.norm(A) |
12 | Округлення | Округлення всіх елементів | np.round(A, 2) |
13 | Одинична матриця | Матриця з 1 по діагоналі | np.identity |
14 | Діагональна матриця | Створення з вектора | np.diag([1,2,3]) |
15 | Верхня трикутна | Тільки елементи над діагоналлю | np.triu(A) |
16 | Нижня трикутна | Тільки елементи під діагоналлю | np.tril(A) |
Шрифти
Розмір шрифта
Колір тексту
Колір тла
Кернінг шрифтів
Видимість картинок
Інтервал між літерами
Висота рядка
Виділити посилання