Python Підручник NumPy для початківців: навчайтеся на прикладах

У чому полягає NumPy Python?

numpy це бібліотека з відкритим кодом, доступна в Python, який допомагає в математичному, науковому, інженерному та науковому програмуванні. Це дуже корисна бібліотека для виконання математичних і статистичних операцій Python. Він ідеально працює для багатовимірних масивів і множення матриць. Його легко інтегрувати з C/C++ та Fortran.

Для будь-якого наукового проекту NumPy — інструмент, який потрібно знати. Він створений для роботи з N-вимірним масивом, лінійною алгеброю, випадковими числами, перетворенням Фур’є тощо.

NumPy — це мова програмування, яка працює з багатовимірними масивами та матрицями. Крім масивів і матриць, NumPy підтримує велику кількість математичних операцій. У цій частині ми розглянемо основні функції, які вам потрібно знати для підручника з 'TensorFlow».

Навіщо використовувати NumPy?

NumPy — це ефективна пам’ять, тобто вона може обробляти величезний обсяг даних, доступніший за будь-яку іншу бібліотеку. Крім того, з NumPy дуже зручно працювати, особливо для множення та зміни форми матриць. Крім того, NumPy швидкий. Насправді TensorFlow і Scikit навчилися використовувати масив 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

Імпортуйте NumPy і перевірте версію

Команда для імпорту numpy така:

import numpy as np

Код вище перейменовує простір імен Numpy на np. Це дозволяє нам додавати до функції, методів і атрибутів Numpy префікс «np» замість введення «numpy». Це стандартний ярлик, який ви знайдете в літературі про numpy

Щоб перевірити встановлену версію NumPy, скористайтеся командою нижче:

print (np.__version__)

вихід:

1.18.0

Що таке Python Масив NumPy?

Масиви NumPy трохи схожі Python списки, але водночас дуже різні. Для тих із вас, хто вперше знайомиться з цією темою, давайте роз’яснимо, що це таке та для чого це корисно.

Як видає назва, масив NumPy є центральною структурою даних бібліотеки numpy. Назва бібліотеки насправді є скороченням від «Numeric Python» або «Числовий Python".

Створення масиву 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 для створення масиву. Однак це рекомендований метод.

Ви також можете створити масив numpy з кортежу.

Математичний Operaна масиві

Над масивом можна виконувати такі математичні операції, як додавання, віднімання, ділення та множення. Синтаксис — це ім’я масиву, після якого йде операція (+.-,*,/), за якою йде операнд

приклад:

numpy_array_from_list + 10

вихід:

array([11, 19, 18, 13])

Ця операція додає 10 до кожного елемента масиву numpy.

Форма масиву

Ви можете перевірити форму масиву за допомогою форми об’єкта, якій передує ім’я масиву. Таким же чином ви можете перевірити тип за допомогою dtypes.

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)
мета код
Створити масив масив ([1,2,3])
роздрукувати форму масив([.]).форма

Що таке numpy.zeros()?

numpy.zeros () або np.нулики Python функція використовується для створення матриці, повної нулів. numpy.zeros() в Python можна використовувати, коли ви ініціалізуєте вагові коефіцієнти під час першої ітерації в TensorFlow та інших статистичних завданнях.

Синтаксис функції numpy.zeros().

numpy.zeros(shape, dtype=float, order='C')

Python Параметри numpy.zeros().

Тут,

  • Форма: форма масиву нульових значень numpy
  • Dtype: це тип даних у numpy нулях. Це необов'язково. Значення за замовчуванням — float64
  • замовлення: Типовим є C, який є основним стилем рядка для numpy.zeros(). 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() в Python можна використовувати, коли ви ініціалізуєте вагові коефіцієнти під час першої ітерації в TensorFlow та інших статистичних завданнях.

Python Синтаксис numpy.ones().

numpy.ones(shape, dtype=float, order='C')

Python Параметри numpy.ones().

Тут,

  • Форма: це форма np.ones Python масив
  • Dtype: це тип даних у numpy. Це необов'язково. Значення за замовчуванням — 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 Функція використовується для повернення одновимірної копії масиву. Коли ви маєте справу з нейронною мережею, наприклад convnet, вам потрібно звести масив. Для цього можна використовувати функції 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 Python з прикладом:

приклад:

## Horitzontal 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 nmber from 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]

Якщо побудувати графік, розподіл буде подібним до наступного

Приклад генерації випадкових Numbers за допомогою NumPy
Приклад генерації випадкових Numbers за допомогою NumPy

Функція NumPy Asarray

Функція asarray() використовується, коли ви хочете перетворити вхідні дані на масив. Вхідними даними можуть бути списки, кортежі, ndarray тощо.

Синтаксис:

numpy.asarray(data, dtype=None, order=None)[source]

Тут,

дані: дані, які потрібно перетворити на масив

dtype: це необов’язковий аргумент. Якщо не вказано, тип даних визначається з вхідних даних

замовлення: за замовчуванням C, який є основним стилем рядка. Інший варіант F (у стилі Фортана)

приклад:

Розглянемо наступну двовимірну матрицю з чотирма рядками та чотирма стовпцями, заповненими на 2

import numpy as np
A = np.matrix(np.ones((4,4)))

Якщо ви хочете змінити значення матриці, ви не можете. Причина в тому, що неможливо змінити копію.

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)

Пояснення коду:

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() в Python функції.

Синтаксис:

numpy.arange(start, stop, step, dtype)

Python Параметри NumPy arange:

  • Start: початок інтервалу для np.arange in Python функції.
  • Стоп: Кінець інтервалу.
  • Крок: інтервал між значеннями. Стандартний крок 1.
  • Dtype: це тип виведення масиву для NumPy arange in Python.

приклад:

import numpy np
np.arange(1, 11)

вихід:

array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10])

приклад:

Якщо ви хочете змінити крок у цій функції NumPy arange Python наприклад, ви можете додати третє число в дужках. Це змінить крок.

import numpy np
np.arange(1, 14, 4)

вихід:

array([ 1,  5,  9, 13])

Функція NumPy Linspace

Linspace дає рівномірно розподілені зразки.

Синтаксис:

numpy.linspace(start, stop, num, endpoint)

Тут,

  • Start: Початкове значення послідовності
  • Стоп: Кінцеве значення послідовності
  • В: кількість зразків для створення. За замовчуванням 50
  • Кінцева точка: якщо True (за замовчуванням), stop є останнім значенням. Якщо False, значення зупинки не включається.

приклад:

Наприклад, його можна використовувати для створення 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.        ])

Якщо ви не хочете включати останню цифру в інтервал, ви можете встановити для кінцевої точки значення 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. Розріжемо матрицю «е». Зазначимо, що в 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 column
print('First row:', e[0])

## Second col
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 product — скалярний добуток a і b. numpy.dot() в Python обробляє 2D-масиви та виконує множення матриць.

Синтаксис:

numpy.dot(x, y, out=None)

параметри

Тут,

x, y: Вхідні масиви. x і y обидва мають бути 1-D або 2-D, щоб функція np.dot() працювала

з: це вихідний аргумент для скаляра 1-D масиву, який потрібно повернути. Інакше слід повернути ndarray.

Повернення

Функція numpy.dot() в Python повертає скалярний добуток двох масивів x і y. Функція dot() повертає скаляр, якщо x і y є 1-D; інакше він повертає масив. Якщо дано '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() використовується для повернення матричного добутку 2 масивів. Ось як це працює

1) 2-D масиви, повертає звичайний продукт

2) Розміри > 2, продукт розглядається як стопка матриці

3) Одновимірний масив спочатку перетворюється на матрицю, а потім обчислюється добуток

Синтаксис:

numpy.matmul(x, y, out=None)

Тут,

x, y: Вхідні масиви. скаляри не допускаються

з: це необов'язковий параметр. Зазвичай вихідні дані зберігаються в ndarray

приклад:

Таким же чином ви можете обчислити множення матриць за допомогою np.matmul

### Matmul: matruc 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*6np.linalg.det(i)

вихід:

-2.000000000000005

Підсумки

  • Python це бібліотека з відкритим кодом, доступна в Python, який допомагає в математичних, наукових, інженерних та наукове програмування даних.
  • numpy.zeros() або np.zeros Python функція використовується для створення матриці, повної нулів.
  • numpy.ones() в Python можна використовувати, коли ви ініціалізуєте вагові коефіцієнти під час першої ітерації в TensorFlow та інших статистичних завданнях.
  • Python Функція NumPy Reshape використовується для формування масиву без зміни його даних.
  • Python Функція NumPy Flatten використовується для повернення одновимірної копії масиву.
  • Numpy.hstack є функцією в Python який використовується для горизонтального стекування послідовностей вхідних масивів, щоб створити єдиний масив.
  • Numpy.vstack є функцією в Python який використовується для вертикального укладання послідовностей вхідних масивів, щоб створити єдиний масив.
  • numpy.arange() — це вбудована функція numpy, яка повертає об’єкт ndarray, що містить рівномірно розподілені значення в межах визначеного інтервалу.
  • Продукт Numpy.dot — потужна бібліотека для матричних обчислень.
  • Функція Numpy matmul() використовується для повернення матричного добутку 2 масивів.