Наука за данните

Урок за Python NumPy

Урок за Python NumPy
В този урок за библиотеката на Python NumPy ще разгледаме как тази библиотека ни позволява да управляваме мощни N-мерни масивни обекти със сложни функции, налични за манипулиране и работа над тези масиви. За да направим този урок завършен, ще разгледаме следните раздели:

Какво представлява пакетът Python NumPy?

Най-просто казано, NumPy означава „Numerical Python“ и това е, което той има за цел да изпълни, за да позволи много лесно и по интуитивен начин сложни цифрови операции, изпълнявани върху обекти с N-мерни масиви. Това е основната библиотека, използвана в научни изчисления, с налични функции за извършване на линейни алгебрични операции и статистически операции.

Една от най-фундаменталните (и атрактивни) концепции за NumPy е използването на N-мерни масивни обекти. Можем да приемем този масив просто като a колекция от редове и колони, точно като файл на MS-Excel. Възможно е да конвертирате списък на Python в масив NumPy и да управлявате функции над него.

Представяне на масив NumPy

Само бележка преди започване, ние използваме виртуална среда за този урок, който направихме със следната команда:

python -m virtualenv numpy
източник numpy / bin / активиране

След като виртуалната среда е активна, можем да инсталираме библиотека numpy във виртуалната env, за да могат да се изпълняват примери, които създаваме след това:

pip инсталирайте numpy

Виждаме нещо подобно, когато изпълняваме горната команда:

Нека бързо тестваме дали пакетът NumPy е инсталиран правилно със следния кратък кодов фрагмент:

импортиране на numpy като np
a = np.масив ([1,2,3])
печат (а)

След като стартирате горната програма, трябва да видите следния изход:

Можем да имаме и многомерни масиви с NumPy:

multi_dimension = np.масив ([(1, 2, 3), (4, 5, 6)])
печат (multi_dimension)

Това ще доведе до резултат като:

[[1 2 3]
[4 5 6]]

Можете също да използвате Anaconda, за да стартирате тези примери, което е по-лесно и това е, което използвахме по-горе. Ако искате да го инсталирате на вашата машина, погледнете урока, който описва „Как да инсталирате Anaconda Python на Ubuntu 18.04 LTS ”и споделете вашите отзиви. Сега нека преминем към различни видове операции, които могат да се извършват с масиви на Python NumPy.

Използване на масиви NumPy над списъци на Python

Важно е да попитате, че когато Python вече има усъвършенствана структура от данни, за да съхранява множество елементи, защо изобщо се нуждаем от масиви NumPy? Масивите NumPy са предпочитан пред Python списъци поради следните причини:

Позволи ни докажете, че масивите NumPy заемат по-малко памет. Това може да се направи, като се напише много проста програма на Python:

импортиране на numpy като np
време за импортиране
импортиране на sys
python_list = диапазон (500)
печат (sys.getsizeof (1) * len (python_list))
numpy_arr = np.подреден (500)
печат (numpy_arr.размер * numpy_arr.размери)

Когато стартираме горната програма, ще получим следния изход:

14000
4000

Това показва, че е същият списък с размери повече от 3 пъти по размер в сравнение със същия размер NumPy масив.

Извършване на операции NumPy

В този раздел нека да разгледаме бързо операциите, които могат да бъдат извършени върху масиви NumPy.

Намиране на размери в масив

Тъй като масивът NumPy може да се използва във всяко размерно пространство за съхранение на данни, можем да намерим измерението на масив със следния кодов фрагмент:

импортиране на numpy като np
numpy_arr = np.масив ([(1,2,3), (4,5,6)])
печат (numpy_arr.ndim)

Ще видим изхода като „2“, тъй като това е двуизмерен масив.

Намиране на тип данни на елементи в масива

Можем да използваме масива NumPy, за да съхраняваме всеки тип данни. Нека сега разберем типа данни на данните, които масивът съдържа:

other_arr = np.масив ([('страхопочитание', 'b', 'котка')])
печат (други_арр.dtype)
numpy_arr = np.масив ([(1,2,3), (4,5,6)])
печат (numpy_arr.dtype)

Използвахме различен тип елементи в горния кодов фрагмент. Ето резултата, който ще покаже този скрипт:

int64

Това се случва, тъй като символите се интерпретират като unicode знаци, а вторият е очевиден.

Преформулирайте елементи от масив

Ако масивът NumPy се състои от 2 реда и 4 колони, той може да бъде прекроен, за да съдържа 4 реда и 2 колони. Нека напишем прост кодов фрагмент за същото:

оригинал = np.масив ([('1', 'b', 'c', '4'), ('5', 'f', 'g', '8')])
печат (оригинал)
преработен = оригинал.преоформяне (4, 2)
печат (преоформен)

След като стартираме горния кодов фрагмент, ще получим следния изход с двата масива, отпечатани на екрана:

[['1' 'b' 'c' '4']
['5' 'f' 'g' '8']]
[['1' 'b']
['c' '4']
['5' 'f']
['g' '8']]

Обърнете внимание как NumPy се е погрижил за преместването и свързването на елементите с нови редове.

Математически операции върху елементи от масив

Извършването на математически операции върху елементи от масив е много просто. Ще започнем с написването на прост кодов фрагмент, за да разберем максимума, минимума и добавянето на всички елементи от масива. Ето кодовия фрагмент:

numpy_arr = np.масив ([(1, 2, 3, 4, 5)])
печат (numpy_arr.макс ())
печат (numpy_arr.мин ())
печат (numpy_arr.сума ())
печат (numpy_arr.означава())
печат (np.sqrt (numpy_arr))
печат (np.std (numpy_arr))

В последните 2 операции по-горе изчислихме също квадратния корен и стандартното отклонение на всеки елемент от масива. Горният фрагмент ще предостави следния изход:

5
1
15
3.0
[[1.   1.41421356 1.73205081 2.   2.23606798]]
1.4142135623730951

Преобразуване на списъци на Python в масиви NumPy

Дори ако сте използвали списъци на Python в съществуващите си програми и не искате да променяте целия този код, но все пак искате да използвате масиви NumPy в новия си код, добре е да знаете, че можем лесно да конвертираме Python списък в масив NumPy. Ето пример:

# Създайте 2 нови списъка височина и тегло
височина = [2.37, 2.87, 1.52, 1.51, 1.70, 2.05]
тегло = [91.65, 97.52, 68.25, 88.98, 86.18, 88.45]
# Създайте 2 масивни масива от височина и тегло
np_height = np.масив (височина)
np_weight = np.масив (тегло)

Само за да проверим, вече можем да разпечатаме типа на една от променливите:

печат (тип (np_height))

И това ще покаже:

Вече можем да извършваме математически операции над всички елементи наведнъж. Нека да видим как можем да изчислим ИТМ на хората:

# Изчислете bmi
bmi = np_weight / np_height ** 2
# Отпечатайте резултата
печат (bmi)

Това ще покаже ИТМ на всички хора, изчислени по елементи:

[16.31682957 11.8394056 29.54033934 39.02460418 29.8200692 21.04699584]

Не е ли лесно и удобно? Дори можем лесно да филтрираме данни с условие вместо индекс в квадратни скоби:

bmi [bmi> 25]

Това ще даде:

масив ([29.54033934, 39.02460418, 29.8200692])

Създавайте произволни последователности и повторения с NumPy

С много функции, присъстващи в NumPy за създаване на случайни данни и подреждането им в необходимата форма, масивите NumPy се използват многократно за генериране на тестов набор от данни на много места, включително отстраняване на грешки и тестване. Например, ако искате да създадете масив от 0 до n, можем да използваме arange (обърнете внимание на единичния 'r') като дадения фрагмент:

печат (np.подредено (5))

Това ще върне изхода като:

[0 1 2 3 4]

Същата функция може да се използва за осигуряване на по-ниска стойност, така че масивът да започва от числа, различни от 0:

печат (np.подредени (4, 12))

Това ще върне изхода като:

[4 5 6 7 8 9 10 11]

Числата не трябва да са непрекъснати, те могат да пропуснат стъпка за коригиране като:

печат (np.подреждане (4, 14, 2))

Това ще върне изхода като:

[4 6 8 10 12]

Можем също да получим числата в намаляващ ред с отрицателна стойност на пропускане:

печат (np.arange (14, 4, -1))

Това ще върне изхода като:

[14 13 12 11 10 9 8 7 6 5]

Възможно е да се финансират n числа между x и y с еднакво интервал с метод linspace, ето кодовият фрагмент за същото:

np.linspace (начало = 10, спиране = 70, num = 10, dtype = int)

Това ще върне изхода като:

масив ([10, 16, 23, 30, 36, 43, 50, 56, 63, 70])

Моля, обърнете внимание, че изходните елементи не са еднакво раздалечени. NumPy прави всичко възможно да го направи, но не е нужно да разчитате на него, тъй като прави закръгляването.

И накрая, нека разгледаме как можем да генерираме набор от произволни последователности с NumPy, която е една от най-използваните функции за целите на тестването. Ще предадем диапазон от числа на NumPy, който ще се използва като начална и крайна точка за случайните числа:

печат (np.случайни.randint (0, 10, size = [2,2]))

Горният фрагмент създава двуизмерен масив NumPy, който ще съдържа произволни числа между 0 и 10. Ето примерния изход:

[[0 4]
[8 3]]

Моля, обърнете внимание, тъй като числата са произволни, изходът може да се различава дори между 2-те пускания на същата машина.

Заключение

В този урок разгледахме различни аспекти на тази изчислителна библиотека, които можем да използваме с Python за изчисляване на прости, както и сложни математически проблеми, които могат да възникнат в различни случаи на употреба NumPy е една от най-важните изчислителни библиотеки, когато става въпрос за инженеринг на данни и изчисляване на числови dat, определено умение, което трябва да имаме под колана си.

Моля, споделете отзивите си за урока в Twitter с @sbmaggarwal и @LinuxHint.

Най-добрите игри за команден ред за Linux
Командният ред не е само най-големият ви съюзник при използване на Linux - той може да бъде и източник на забавление, защото можете да го използвате, ...
Най-добрите приложения за картографиране на геймпад за Linux
Ако искате да играете игри на Linux с геймпад вместо типична система за въвеждане на клавиатура и мишка, има някои полезни приложения за вас. Много ко...
Полезни инструменти за геймърите на Linux
Ако искате да играете игри на Linux, има вероятност да сте използвали приложения и помощни програми като Wine, Lutris и OBS Studio, за да подобрите иг...