Python Підручник з NumPy для початківців
⚡ Розумний підсумок
NumPy є основоположним Python Бібліотека для числових обчислень, керування масивами, матрицями, лінійною алгеброю та випадковою вибіркою. Цей посібник з NumPy проведе вас по встановленню, створенню масивів, налаштуванню...ping, нарізання, статистика та матрична математика з runnable Python приклади

У чому полягає NumPy Python?
numpy є відкритим вихідним кодом Python бібліотека для математичного, наукового, інженерного та інформаційно-аналітичного програмування. Це дуже корисна бібліотека для математичних та статистичних операцій у PythonВін чудово працює з багатовимірними масивами та множенням матриць, а також легко інтегрується з C/.C++ та Fortran.
Для будь-якого наукового проєкту NumPy — це інструмент, який потрібно знати. Він створений для N-вимірних масивів, лінійної алгебри, генерації випадкових чисел, перетворень Фур'є та багато іншого.
NumPy надає Python першокласна підтримка багатовимірних масивів і матриць, а також великий набір математичних операцій, які з ними діють. У цьому посібнику ми розглянемо основні функції, які вам потрібно знати, перш ніж перейти до посібника з теми «TensorFlow».
Навіщо використовувати NumPy?
NumPy ефективно використовує пам'ять, тому він може обробляти великі обсяги числових даних легше, ніж чистий NumPy. Python списки. Це також дуже зручно для множення матриць та обчисленьping, і це швидко, оскільки важка робота делегується скомпільованим C-підпрограмам. Фактично, такі бібліотеки, як TensorFlow, PyTorch та Scikit-learn покладаються на масиви NumPy для матричної математики у своїй внутрішній частині, що робить NumPy тихою робочою конячкою для більшості сучасних робочих процесів у сфері науки про дані та штучного інтелекту.
Як встановити NumPy
Щоб встановити бібліотеку NumPy, зверніться до нашого посібника Як встановити TensorFlow. NumPy встановлено за замовчуванням разом із Anaconda.
У рідкісному випадку, коли NumPy не встановлено, скористайтеся будь-яким із наведених нижче варіантів.
Ви можете встановити NumPy за допомогою Anaconda:
conda install -c anaconda numpy
- In Jupyter ноутбук:
import sys
!conda install --yes --prefix {sys.prefix} numpy
Користувачі Pip можуть встановити або оновити за допомогою однієї команди:
pip install --upgrade numpy
Імпортуйте NumPy і перевірте версію
Команда для імпорту numpy така:
import numpy as np
У наведеному вище рядку простір імен NumPy перейменовується на npЦе скорочення дозволяє вам додавати до функцій, методів та атрибутів NumPy префікс np. замість "ти"ping numpy., і це стандартна домовленість, яку ви знайдете в екосистемі NumPy.
Щоб перевірити встановлену версію NumPy, скористайтеся командою нижче:
print(np.__version__)
вихід:
2.1.3
NumPy 2.0 вийшов у червні 2024 року та є поточною основною стабільною серією. Якщо ваш проект все ще залежить від API 1.x, закріпіть його на numpy<2 у вашому файлі вимог, оскільки деякі застарілі псевдоніми, такі як np.float були видалені у версії 2.0.
Що таке? Python Масив NumPy?
Масиви NumPy виглядають трохи схоже на Python списки на перший погляд, але вони поводяться зовсім по-різному. Для читачів, які не встигають ознайомитися з цією темою, давайте пояснимо, що таке ndarray і чому він важливий.
Як випливає з назви, масив NumPy є центральною структурою даних бібліотеки NumPy. Сама назва є скороченням від «Numeric Python» або «Числовий Python«, а масив ndarray — це однорідний блок пам’яті фіксованого розміру з відомою формою та типом даних.
Створення масиву NumPy
Найпростіший спосіб створити масив у NumPy – почати з Python список.
myPythonList = [1,9,8,3]
перетворити Python список у масив NumPy за допомогою np.array.
numpy_array_from_list = np.array(myPythonList)
Відобразити вміст масиву.
numpy_array_from_list
вихід:
array([1, 9, 8, 3])
На практиці немає необхідності декларувати a Python спочатку список. Ці два кроки можна поєднати.
a = np.array([1,9,8,3])
ПРИМІТКА:
У документації NumPy також згадується np.ndarray, Але np.array – це рекомендована заводська функція для щоденного використання.
Ви також можете створити масив NumPy з кортежу таким самим чином.
Математичний Operaна масиві
Ви можете виконувати математичні операції, такі як додавання, відніманняtracція, ділення та множення масиву. Синтаксис полягає в тому, щоб спочатку ввести ім'я масиву, а потім оператор (+, -, *, /), а потім операнд. Ці операції векторизовані, що означає, що NumPy застосовує їх до кожного елемента без явного Python петлі.
приклад:
numpy_array_from_list + 10
вихід:
array([11, 19, 18, 13])
Ця операція додає 10 до кожного елемента масиву NumPy.
Форма масиву
Ви можете перевірити форму масиву за допомогою shape атрибут, доступ до якого здійснюється шляхом додавання його до імені масиву. Так само можна перевірити тип за допомогою dtype.
import numpy as np a = np.array([1,2,3]) print(a.shape) print(a.dtype) (3,) int64
Ціле число – це значення без десяткової коми. Якщо створити масив із десятковими дробами, тип даних змінюється на float.
#### Different type b = np.array([1.1,2.0,3.2]) print(b.dtype) float64
2 розмірний масив
Ви можете додати розмірність, вказавши її комою в дужках.
Зверніть увагу, що внутрішні кортежі повинні знаходитися всередині зовнішніх дужок [].
### 2 dimension c = np.array([(1,2,3), (4,5,6)]) print(c.shape) (2, 3)
3 розмірний масив
Вищі розміри можна побудувати таким самим чином.
### 3 dimension d = np.array([ [[1, 2,3], [4, 5, 6]], [[7, 8,9], [10, 11, 12]] ]) print(d.shape) (2, 2, 3)
| Мета | Code |
|---|---|
| Створити масив | масив ([1,2,3]) |
| роздрукувати форму | масив([.]).форма |
Що таке numpy.zeros()?
numpy.zeros () or np.zeros це Python функція, яка використовується для створення матриці, заповненої нулями. numpy.zeros() корисно, коли вам потрібно ініціалізувати ваги під час першої ітерації в TensorFlow або налаштувати буфери-заповнювачі для інших статистичних завдань.
Синтаксис функції numpy.zeros().
numpy.zeros(shape, dtype=float, order='C')
Python Параметри numpy.zeros().
Тут,
- Форма: форма нульового масиву NumPy.
- Dtype: тип даних елементів. Це необов'язково, а значення за замовчуванням —
float64. - замовлення: за замовчуванням
C, що є макетом з основним рядком, що використовуєтьсяnumpy.zeros()in Python.
Python numpy.zeros() Приклад
import numpy as np np.zeros((2,2))
вихід:
array([[0., 0.], [0., 0.]])
Приклад нуля numpy із типом даних
import numpy as np np.zeros((2,2), dtype=np.int16)
вихід:
array([[0, 0], [0, 0]], dtype=int16)
Що таке numpy.ones()?
функція np.ones(). створює матрицю, заповнену одиницями. numpy.ones() in Python корисно під час ініціалізації ваг під час першої ітерації в TensorFlow та для інших статистичних завдань.
Python Синтаксис numpy.ones().
numpy.ones(shape, dtype=float, order='C')
Python Параметри numpy.ones().
Тут,
- Формаформа np.ones Python масив.
- Dtype: тип даних елементів. Це необов'язково, а значення за замовчуванням —
float64. - замовлення: за замовчуванням
C, що є макетом з основним рядком.
Python numpy.ones() Двовимірний масив із прикладом типу даних
import numpy as np np.ones((1,2,3), dtype=np.int16)
вихід:
array([[[1, 1, 1], [1, 1, 1]]], dtype=int16)
функція numpy.reshape(). Python
Python NumPy Reshape змінює форму масиву без зміни його даних. Можливо, вам доведеться змінити форму даних з широкого на довгий формат або перейти з одновимірного вектора на двовимірну матрицю, перш ніж передати їх моделі. np.reshape Функція обробляє це за один виклик.
Синтаксис np.reshape()
numpy.reshape(a, newShape, order='C')
Тут,
a: масив, форму якого потрібно змінити.
newShape: нова бажана форма.
замовлення: за замовчуванням C, макет за основними рядками.
Приклад NumPy Reshape
import numpy as np e = np.array([(1,2,3), (4,5,6)]) print(e) e.reshape(3,2)
вихід:
// Before reshape [[1 2 3] [4 5 6]]
//After Reshape array([[1, 2], [3, 4], [5, 6]])
numpy.flatten() в Python
Python NumPy Flatten повертає копію масиву, згорнутого в один вимір. Під час роботи з нейронними мережами, такими як конвергентні мережі (convnets), часто потрібно вирівняти тензор зображення, перш ніж передавати його щільному шару. np.flatten() Функція обробляє це за один виклик.
Синтаксис np.flatten()
numpy.flatten(order='C')
Тут,
замовлення: за замовчуванням C, макет за основними рядками.
Приклад NumPy Flatten
e.flatten()
вихід:
array([1, 2, 3, 4, 5, 6])
У чому полягає numpy.hstack(). Python?
numpy.hstack це Python функція, яка використовується для горизонтального укладання послідовностей вхідних масивів в один масив. За допомогою hstack(), ви додаєте дані вздовж осі стовпця. Це дуже зручний помічник у NumPy, коли вам потрібно об'єднати вектори ознак поруч.
Давайте вивчати hstack in Python з прикладом.
приклад:
## Horizontal Stack import numpy as np f = np.array([1,2,3]) g = np.array([4,5,6]) print('Horizontal Append:', np.hstack((f, g)))
вихід:
Horizontal Append: [1 2 3 4 5 6]
У чому полягає numpy.vstack(). Python?
numpy.vstack це Python функція, яка використовується для вертикального укладання послідовностей вхідних масивів в один масив. За допомогою vstack(), ви додаєте дані вздовж осі рядків, що зручно, коли потрібно об'єднати групи зразків.
Давайте вивчимо це на прикладі.
приклад:
## Vertical Stack import numpy as np f = np.array([1,2,3]) g = np.array([4,5,6]) print('Vertical Append:', np.vstack((f, g)))
вихід:
Vertical Append: [[1 2 3] [4 5 6]]
Після вивчення NumPy vstack та hstack, давайте розглянемо приклад, який генерує випадкові числа в NumPy.
Створити випадковий Numbers за допомогою NumPy
Щоб згенерувати випадкові числа з гаусового розподілу, використовуйте:
numpy.random.normal(loc, scale, size)
Тут,
- Місце: середнє значення. Центр розподілу.
- шкаластандартне відхилення.
- Розмір: кількість повернутих зразків.
приклад:
## Generate random numbers from a normal distribution normal_array = np.random.normal(5, 0.5, 10) print(normal_array) [5.56171852 4.84233558 4.65392767 4.946659 4.85165567 5.61211317 4.46704244 5.22675736 4.49888936 4.68731125]
Якщо побудувати графік, розподіл буде подібним до наступного графіка.

Зверніть увагу, що новіший код все частіше використовує сучасний API генератора, np.random.default_rng(), що є рекомендованою заміною для застарілої версії np.random.normal виклики в NumPy 2.x.
Функція NumPy Asarray
Команда asarray() Функція перетворює вхідні дані на масив. Вхідними даними можуть бути список, кортеж, ndarray або подібна послідовність.
Синтаксис:
numpy.asarray(data, dtype=None, order=None)
Тут,
дані: дані, які потрібно перетворити на масив.
dtype: необов'язковий. Якщо не вказано, тип даних визначається з вхідних даних.
замовлення: за замовчуванням C, макет за основним рядком. Інший варіант — F (Fortraколонка в стилі n-major).
приклад:
Розглянемо наступну двовимірну матрицю з чотирма рядками та чотирма стовпцями, заповнену 1.
import numpy as np A = np.matrix(np.ones((4,4)))
Якщо ви спробуєте змінити значення в матриці через np.array, оригінал не змінено. Причина полягає в тому, що np.array створює копію матриці.
np.array(A)[2]=2 print(A) [[1. 1. 1. 1.] [1. 1. 1. 1.] [1. 1. 1. 1.] [1. 1. 1. 1.]]
Матриця не змінюється. Використовуйте asarray коли ви хочете змінити початковий масив на місці. Давайте подивимося, що станеться, якщо ви встановите третій рядок на значення 2.
np.asarray(A)[2]=2 print(A)
Code Пояснення:
np.asarray(A) перетворює матрицю A до представлення масиву.
[2] вибирає третій рядок.
вихід:
[[1. 1. 1. 1.] [1. 1. 1. 1.] [2. 2. 2. 2.] # new value [1. 1. 1. 1.]]
Що таке numpy.arange()?
numpy.arange () — це вбудована функція NumPy, яка повертає масив ndarray, що містить рівномірно розташовані значення в межах визначеного інтервалу. Наприклад, щоб створити значення від 1 до 10, можна викликати np.arange() in Python.
Синтаксис:
numpy.arange(start, stop, step, dtype)
Python Параметри NumPy arange:
- Старт: початок інтервалу для
np.arangein Python. - Стоп: кінець інтервалу.
- Крок: інтервал між значеннями. Крок за замовчуванням — 1.
- Dtypeтип вихідного масиву для NumPy
arange.
приклад:
import numpy as np np.arange(1, 11)
вихід:
array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
приклад:
Щоб змінити крок у цьому NumPy arange Наприклад, додайте третє число до дужок. Це змінить розмір кроку.
import numpy as np np.arange(1, 14, 4)
вихід:
array([ 1, 5, 9, 13])
Функція NumPy Linspace
linspace повертає рівномірно розподілені вибірки між двома кінцевими точками.
Синтаксис:
numpy.linspace(start, stop, num, endpoint)
Тут,
- Старт: початкове значення послідовності.
- Стопкінцеве значення послідовності.
- В: кількість зразків для створення. За замовчуванням – 50.
- Кінцева точка: якщо
True(За замовчуванням),stopостаннє значення. ЯкщоFalse,stopне входить у вартість.
приклад:
Наприклад, його можна використовувати для створення 10 рівномірно розташованих значень від 1 до 5.
import numpy as np np.linspace(1.0, 5.0, num=10)
вихід:
array([1. , 1.44444444, 1.88888889, 2.33333333, 2.77777778, 3.22222222, 3.66666667, 4.11111111, 4.55555556, 5. ])
Якщо ви не хочете включати останню цифру в інтервал, встановіть endpoint до False.
np.linspace(1.0, 5.0, num=5, endpoint=False)
вихід:
array([1. , 1.8, 2.6, 3.4, 4.2])
Функція LogSpace NumPy в Python
logspace повертає рівномірно розташовані числа у логарифмічній шкалі. logspace має ті ж самі параметри, що й np.linspace.
Синтаксис:
numpy.logspace(start, stop, num, endpoint)
приклад:
np.logspace(3.0, 4.0, num=4)
вихід:
array([ 1000. , 2154.43469003, 4641.58883361, 10000. ])
Нарешті, якщо ви хочете перевірити розмір пам'яті для одного елемента масиву, ви можете використовувати itemsize.
x = np.array([1,2,3], dtype=np.complex128) x.itemsize
вихід:
16
Кожен елемент займає 16 байт.
Індексація та нарізка Python
Розподіл даних за допомогою NumPy є простим. Ми розподілимо матрицю e, в Python, для повернення рядків або стовпців використовуються квадратні дужки.
приклад:
## Slice import numpy as np e = np.array([(1,2,3), (4,5,6)]) print(e) [[1 2 3] [4 5 6]]
Пам'ятайте, що в NumPy перший індекс масиву починається з 0.
## First row print('First row:', e[0]) ## Second row print('Second row:', e[1])
вихід:
First row: [1 2 3] Second row: [4 5 6]
In Python, як і в багатьох інших мовах,
- Значення перед комою позначає рядки.
- Значення після коми відповідає стовпцям.
- Якщо потрібно вибрати стовпець, додайте
:перед індексом стовпця. :означає, що вам потрібні всі рядки з вибраного стовпця.
print('Second column:', e[:,1])
Second column: [2 5]
Щоб повернути перші два значення другого рядка, використовуйте : щоб вибрати всі стовпці до другого індексу.
## Second Row, two values print(e[1, :2]) [4 5]
Статистичні функції в Python
NumPy надає корисний набір статистичних функцій для знаходження мінімуму, максимуму, процентиля, стандартного відхилення, дисперсії тощо з заданого масиву. Найпоширеніші з них перелічені нижче.
NumPy постачається з потужними статистичними помічниками, зведеними в таблиці.
| функція | Пустотливий |
|---|---|
| Мін | np.min() |
| Макс | np.max() |
| Середня | np.mean() |
| Медіана | np.median() |
| Standard deviation | np.std() |
Розглянемо наступний масив:
приклад:
import numpy as np normal_array = np.random.normal(5, 0.5, 10) print(normal_array)
вихід:
[5.56171852 4.84233558 4.65392767 4.946659 4.85165567 5.61211317 4.46704244 5.22675736 4.49888936 4.68731125]
Приклад статистичних функцій NumPy
### Min print(np.min(normal_array)) ### Max print(np.max(normal_array)) ### Mean print(np.mean(normal_array)) ### Median print(np.median(normal_array)) ### Sd print(np.std(normal_array))
вихід:
4.467042435266913 5.612113171990201 4.934841002270593 4.846995625786663 0.3875019367395316
Що таке скалковий добуток numpy?
numpy.dot — потужна функція для обчислення матриць. Наприклад, ви можете обчислити скалярний добуток за допомогою np.dot. numpy.dot повертає скалярний добуток a та b, та обробляє як одновимірні, так і двовимірні масиви. Для двовимірних вхідних даних виконує множення матриць.
Синтаксис:
numpy.dot(x, y, out=None)
Параметри
Тут,
x, y: вхідні масиви. x та y обидва мають бути 1D або 2D для np.dot() працювати як скалярний добуток або множення матриць.
з: необов'язковий вихідний аргумент, який використовується для захоплення результату. В іншому випадку повертається масив ndarray.
Повернення
Функція numpy.dot() повертає скалярний добуток двох масивів x та yВін повертає скаляр, коли обидва є 1D, інакше повертає масив. Якщо out задано, то повертається цей масив.
Піднімає
Скалярний добуток у Python піднімає ValueError якщо останній вимір x не відповідає передостанньому виміру y.
приклад:
## Linear algebra ### Dot product: product of two arrays f = np.array([1,2]) g = np.array([4,5]) ### 1*4+2*5 np.dot(f, g)
вихід:
14
Множення матриці в Python
NumPy matmul() Функція повертає матричний добуток двох масивів. Ось як це працює.
1) Для двовимірних масивів повертає добуток нормальних матриць.
2) Для розмірностей, більших за 2, добуток розглядається як стек матриць.
3) Одновимірний масив спочатку перетворюється на матрицю, а потім обчислюється його добуток.
Інфікс @ оператор, доступний з Python 3.5 – це скорочення від matmul і широко використовується в сучасному коді.
Синтаксис:
numpy.matmul(x, y, out=None)
Тут,
x, y: вхідні масиви. Скалярні числа заборонені.
з: необов'язковий параметр. Зазвичай вивід зберігається в масиві ndarray.
приклад:
Так само можна обчислити множення матриць за допомогою np.matmul.
### Matmul: matrix product of two arrays h = [[1,2],[3,4]] i = [[5,6],[7,8]] ### 1*5+2*7 = 19 np.matmul(h, i)
вихід:
array([[19, 22], [43, 50]])
Determinant
Якщо вам потрібно обчислити визначник матриці, використовуйте np.linalg.det()NumPy подбає про розміри за вас.
приклад:
## Determinant 2*2 matrix ### 5*8-7*6 np.linalg.det(i)
вихід:
-2.000000000000005
Пояснення NumPy Broadcasting
Розсилка – це правило, яке дозволяє NumPy виконувати арифметичні дії над масивами різної форми без копіювання даних. Коли ви додаєте скаляр до одновимірного вектора або одновимірний вектор до двовимірної матриці, NumPy розтягує менший операнд вздовж відсутніх осей, щоб форми вирівнювалися. Це дозволяє уникнути явного Python цикли, і це одна з головних причин, чому код NumPy здається швидким та лаконічним.
Дві фігури сумісні для трансляції, коли, порівняно справа наліво, кожна пара вимірів або дорівнює, або один з них дорівнює 1. Наприклад, матриця фігури (3, 4) транслює на ряд фігур (4,) або стовпець форми (3, 1)Та сама логіка забезпечує нормалізацію в машинному навчанні, де ви підраховуєтеtracвектор середнього значення для кожної ознаки з пакета зразків в одному рядку. Широкомовлення також є концептуальною моделлю, яка використовується тензорними бібліотеками, такими як PyTorch, TensorFlow та JAX, тому правила, які ви тут вивчите, можна безпосередньо перенести в код GPU.
Як NumPy забезпечує роботу штучного інтелекту та машинного навчання
NumPy лежить майже в основі кожного сучасного Python Стек ШІ. PyTorТензори ch, тензори TensorFlow Eager та масиви JAX надають однакові функції широкомовлення, зрізання та решарки.ping API, про який ви дізналися на NumPy ndarrays. Багато навчальних посібників досі використовують попередньо оброблені масиви NumPy для навчання моделей, а фреймворки приймають їх без нульового перетворення.
Три конкретні шаблони показують, як NumPy взаємодіє з роботою ШІ сьогодні. По-перше, інженери обробки даних формують необроблені функції в масиви NumPy, перш ніж передавати їх конвеєрам scikit-learn або наборам даних Hugging Face. По-друге, дослідники використовують NumPy як базову модель процесора, а потім замінюють їх CuPy, який забезпечує майже ідентичний API, але працює на графічних процесорах NVIDIA через CUDA. По-третє, JAX базується на API NumPy, щоб додати автоматичну диференціацію та компіляцію "точно вчасно", тому той самий код, який працює на ноутбуці, може працювати на технологіях TPU у хмарі. Висновок полягає в тому, що навички роботи з масивами, які ви розвиваєте за допомогою NumPy, застосовуються в кожному основному інструментарії глибокого навчання, що робить цей посібник корисним кроком на шляху до розробки ШІ.
