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 от Tuple.

математически 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 нула с Datatype

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 Array
  • Dtype: е типът данни в numpy ones. Не е задължително. Стойността по подразбиране е float64
  • Поръчка: По подразбиране е C, което е основен стил на ред.

Python numpy.ones() 2D масив с пример за тип данни

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 функцията се използва за оформяне на масив, без да се променят неговите данни. В някои случаи може да се наложи да промените формата на данните от широки към дълги. Можете да използвате функцията np.reshape за това.

Синтаксис на np.reshape()

numpy.reshape(a, newShape, order='C')

Тук

a: Масив, който искате да преоформите

нова форма: Новите желания оформят

Поръчка: По подразбиране е 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-D матрица с четири реда и четири колони, запълнени с 1

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:

  • Начало: Начало на интервала за np.arange in Python функция.
  • Спиране: Край на интервала.
  • Стъпка: Разстояние между стойностите. Стъпката по подразбиране е 1.
  • Dtype: е тип изходен масив за подреждане на NumPy Python.

Пример:

import numpy np
np.arange(1, 11)

Изход:

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

Пример:

Ако искате да промените стъпката в тази функция за подреждане на NumPy в Python Например, можете да добавите трето число в скобите. Това ще промени стъпката.

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

Изход:

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

Функция NumPy Linspace

Linspace дава равномерно разпределени проби.

Синтаксис:

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

Тук

  • Начало: Начална стойност на последователността
  • Спиране: Крайна стойност на последователността
  • В: Брой проби за генериране. По подразбиране е 50
  • Endpoint: Ако е True (по подразбиране), стоп е последната стойност. Ако е 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. Ще разделим матрицата "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 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 е оборудван със стабилната статистическа функция, както е посочено по-долу

функция numpy
Min np.min()
макс np.max()
Означава np.mean()
Медиана np.медиана()
Стандартно отклонение 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) 1-D масив първо се повишава до матрица и след това продуктът се изчислява

Синтаксис:

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]])

определящ

Не на последно място, ако трябва да изчислите детерминантата, можете да използвате np.linalg.det(). Имайте предвид, че numpy се грижи за измерението.

Пример:

## Determinant 2*2 matrix
### 5*8-7*6np.linalg.det(i)

Изход:

-2.000000000000005

Oбобщение

  • 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 масива.