Чому вам слід використовувати NumPy

5 хв. читання

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 повинні бути одного типу, на зразок цілих чисел.

Ви можете уявляти одновимірний масив як колонку чи рядок таблиці, що містить один чи більше елементів:

Чому вам слід використовувати NumPy

Щоб створити масив, виконайте таке:

import numpy as np 
a = np.array([1,2,3])

Багатовимірні масиви

У багатовимірних масивах колонок більше за одну.

Уявіть таблиці Excel — там є колонки та рядки. Кожна колонка може розглядатися як вимір. Ось двовимірний масив:

Чому вам слід використовувати NumPy

Створюємо екземпляр об'єкту 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))

Доступні також інші типи, серед яких:

  1. Boolean.
  2. Integer (зі знаком чи без).
  3. Float.
  4. 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() #матричний добуток двох масивів
Помітили помилку? Повідомте автору, для цього достатньо виділити текст з помилкою та натиснути Ctrl+Enter
Codeguida 6.2K
Приєднався: 7 місяців тому
Коментарі (0)

    Ще немає коментарів

Щоб залишити коментар необхідно авторизуватися.

Вхід / Реєстрація