NumPy — одна з найпотужніших бібліотек у Python. Тож давайте розглянемо основні фічі бібліотеки і поширені математичні функції. Виклад у статті буде простим і ця інфомрація стане у пригоді для кращого розуміння Python.
Краще з'ясувати можливості Numpy, ніж заново винаходити велосипед.
Що таке NumPy?
- NumPy — бібліотека обчислень для Python з відкритим сирцевим кодом.
- Містить такі структури даних, як багатовимірні масиви та матриці.
- Може слугувати для виконання певних математичних операцій над масивами, на зразок тригонометричних, статистичних, алгебраїчних обчислень.
- NumPy — це розширення Numeric та Numarray.
- Бібліотека містить багато математичних, алгебраїчних функцій та функцій перетворення.
- Також є генератори випадкових чисел.
- NumPy — обгортка над бібліотекою на C.
- Об'єкти Pandas дуже залежать від об'єктів NumPy. Pandas розширює NumPy.
Як встановити NumPy?
Використовуйте pip
для встановлення пакету NumPy.
pip install numpy
Примітка: SciPy також містить пакети NumPy.
Найважливіші типи даних у NumPy
У NumPy доступно багато об'єктів, найважливіші з яких:
Одновимірні масиви
N-вимірний масив, також відомий як ndarray
. Усі елементи ndarray повинні бути одного типу, на зразок цілих чисел.
Ви можете уявляти одновимірний масив як колонку чи рядок таблиці, що містить один чи більше елементів:

Щоб створити масив, виконайте таке:
import numpy as np
a = np.array([1,2,3])
Багатовимірні масиви
У багатовимірних масивах колонок більше за одну.
Уявіть таблиці Excel — там є колонки та рядки. Кожна колонка може розглядатися як вимір. Ось двовимірний масив:

Створюємо екземпляр об'єкту array :
numpy.array([,.,.,.,])
numpy.array([1,2]) #одновимірний
numpy.array([[1,2],[10,20]]) #двовимірний
#для комплексних чисел
numpy.array([1,2], dtype=complex) #одновимірний масив комплексних чисел
Якщо вам потрібен тривимірний масив:
3DArray = np.random.randint(10, size=(3, 4, 5))
Доступні також інші типи, серед яких:
- Boolean.
- Integer (зі знаком чи без).
- Float.
- Complex.
Способи створити масив
Існує декілька різних способів створити масив. Нижче ми розглянемо найбільш поширені.
- Якщо ви хочете створити масив без елементів:
numpy.empty(2) #одновимірний масив для двох елементів
numpy.empty(2,3) #двовимірний масив (2 рядки, 3 колонки)
- Масив, заповнений нулями:
numpy.zeros(2) #створюємо одновимірний масив з 2 елементами – нулями
#Помітьте: параметром методу може бути int або tuple
- Заповнений одиницями:
numpy.ones(2) #створюємо одновимірний масив з двома елементами зі значенням 1
- Numpy-масив з послідовності елементів Python:
numpy.asarray([python sequence]) #наприклад, numpy.asarray([1,2])
- Текст можна перетворити на масив:
numpy.frombuffer('hi')
#frombuffer() приймає будь-який об'єкт, що реалізує інтерфейс buffer
Як dtype
можна встановити параметр, за замовчуванням це float.
- Якщо ви хочете створити діапазон елементів:
import numpy as np
array = range(3)
#array will contain 0,1,2
- Якщо ви хочете створити масив з рівномірно розподіленими значеннями:
numpy.arrange(first, last, step, type)
#без вказаних last, step та type, функція поводитиметься як arrange()
наприклад, вказавши такі аргументи
numpy.array(0,6,2) отримаємо масив [0,2,4]
- Якщо ви хочете створити масив, де значення лінійно розподілені між інтервалом, використовуйте такий підхід:
numpy.linspace(first, last, number)
наприклад, такий код
numpy.linspace(0,10,5) поверне [0,2.5,5,7.5,10]
- Для створення масиву, де значення логарифмічно розподілені між інтервалом, використовуйте таку функцію:
numpy.logspace(first, end, number)
Можна визначити будь-яку основу. Значення за замовчуванням 10.
- Генерація випадкових чисел
Використовуйте модуль numpy для генерації рівномірно розподілених чисел:
np.random.rand(3,2) #3 рядка, 2 колонки
Додавання/Видалення/Сортування елементів
Щоб додати елементи:
np.append(a, [1,2]) #додає 1,2 у кінець масиву
#можна також використовувати insert якщо ми хочемо вставити за заданим індексом
Щоб видалити елементи:
np.delete(array, 1) #1 видалиться з масиву
Сортування:
Для сортування масиву використовується функція sort(array, axis, kind, orderby)
:
np.sort(array1, axis=1, kind = 'quicksort', order ='column name')
Функції масивів та атрибути NumPy
Об'єкт ndarray
має певні атрибути, серед яких:
-
shape
: для знаходження розмірності (кількості стовпців/рядків) масиву:
array = np.array([[..],[..]])
array.shape
Ви можете змінити значення shape
, тобто розмірність:
array.shape = (1,2) #1 рядок, 2 колонки
- З такою ж метою може використовуватись
resize(x,y)
- Якщо ви хочете знайти кількість вимірів масиву:
array.dim
- Якщо ви хочете знайти розмір кожного елемента масиву:
array.itemsize
Функція повертає розмір кожного елемента у байтах.
- Щоб отримати підмножину масиву:
array = np.arrange(100)
#Отримаємо 3-ій елемент:
array[2]
#Отримаємо елементи у межах індексу
array[3:5] #3 - початок, 5 - кінець
#Отримаємо 3-10 елементи, з кроком 4:
array[2:9:4]
#Отримаємо усі елементи, починаючи з 2-го
array[1:]
#Той же підхід у n-вимірному масиві
array[[0,1],[1,2]]
- Умовні вирази у зрізах масивів
Ви можете використовувати логічні оператори. Наприклад, знаходимо усі NAN
елементи:
array[np.isnan(array)]
where()
використовується, щоб передавати логічні вирази:
np.where(array > 5) # повертаємо усі елементи, що відповідають критерію
- Трансляція масиву
Коли математичні операції застосовуються до двох масивів різних розмірів, виконується трансляція масиву з меншим розміром:
bigger_array = arrange(5,3) #5 рядків, 3 колонки
smaller_array = arrange(5) #5 рядків, 1 колонка
final_array = bigger_array + smaller_array
- Транспонування масиву
array.T
З цією ж метою можуть використовуватись функції rollaxis
, swapaxes
, transpose
.
- Для об'єднання масивів стануть у пригоді такі функції:
np.concatenate(a,b)
np.stack(a,b)
np.hstack(a,b)
np.vstack(a,b)
- Рядкові оператори
Зверніть увагу на перелік рядкових операторів, серед яких:
add(), upper(), lower(), replace() etc.
- Для створення копії масиву numpy:
new_array = np.copy(array)
Математичні функції
Numpy пропонує перелік потужних математичних функцій:
-
Add
,Subtract
,Multiple
,Divide
,Power
,Mod
Для базових арифметичних операцій
np.add(array1, array2)
np.subtract(array1, array2)
np.multiply(array1, array2)
np.divide(array1, array2)
np.pow(array1, array2)
np.pow(array1, integer)
#щоб отримати залишок
np.mod(array1, array2)
np.remainder(array1, array2)
-
Rounding
,Ceil
,Floor
Для зміни точності всіх елементів масиву:
np.around(array, 4) # 4dp
np.ceil(array) #1.8 стане 2
np.floor(array) #1.8 стане 1
- Тригонометричні функції
array = np.arrange(10)
np.sin(array)
np.cos(array)
np.tan(array)
np.arcsin(array)
np.arcos(array)
np.arctan(array)
Також можна застосувати функцій для комплексних чисел, щоб отримати дійсні або уявні частини масиву.
- Статистичні функції
Доступна велика кількість статистичних функцій:
np.amin(array1, axis)
np.amax(array1, axis)
np.percentile(array1, percentile)
Або такі:
np.median()
, np.st()
, np.average()
, np.mean()
, np.var()
.
- Алгебраїчні функції Numpy містить модуль linalg, який пропонує багато алгебраїчних функцій:
1. dot() #dot добуток двох масивів
2. inner() #inner добуток двох масивів
3. determinant() #детермінант масиву
4. solve() #розв'язок матричних рівнянь
5. inv() #інверсія матриці
6. matmul() #матричний добуток двох масивів
Ще немає коментарів