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

Урок за Python SciPy

Урок за Python SciPy
В този урок ще видим каква е ползата от библиотеката SciPy в Python и как тя ни помага да работим с математически уравнения и алгоритми по интерактивен начин. Хубавото на пакета SciPy Python е, че ако искаме класове или изграждаме уеб страници, SciPy е напълно съвместим със системата като цяло и може да осигури безпроблемна интеграция.

Като SciPy е с отворен код, има много активна и жизнена общност от разработчици, поради което има огромен брой модули за огромно количество научни приложения и изчисления, достъпни със SciPy. Някои от сложните математически операции, които могат да се извършват с SciPy, са:

SciPy може да се сравни с повечето командни и стандартни библиотеки като GSL библиотека за C ++ и Matlab. Тъй като SciPy е изграден върху пакета NumPy, тези два пакета също могат да бъдат интегрирани напълно. Ако можете да измислите математическа операция, която трябва да се направи, уверете се, че сте проверили библиотеката SciPy, преди да внедрите този модул самостоятелно, защото в повечето случаи SciPy вече е изпълнил всички операции за вас.

Инсталирайте SciPy Library

Нека инсталираме библиотеката SciPy, преди да преминем към действителните примери и концепции. Има два начина за инсталиране на този пакет. Първият включва използването на мениджъра на пакети на Python, pip:

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

Вторият начин е свързан с Anaconda, ние можем да инсталираме пакета като:

conda install -c anaconda scipy

След като библиотеката бъде инсталирана, можем да я импортираме като:

внос scipy

И накрая, тъй като ще използваме и NumPy (Препоръчително е за всички операции на NumPy да използваме NumPy директно, вместо да преминаваме през пакета SciPy):

импортиране на numpy

Възможно е в някои случаи също да искаме да начертаем резултатите си, за които ще използваме библиотеката Matplotlib. Извършете следното импортиране за тази библиотека:

импортиране на matplotlib

Ще използвам мениджъра на Anaconda за всички примери в този урок. Ще пусна Jupyter Notebook за същото:

Сега, когато сме готови с всички оператори за импортиране да напишем някакъв код, нека започнем да се гмуркаме в пакета SciPy с някои практически примери.

Работа с полиномиални уравнения

Ще започнем с разглеждане на прости полиномиални уравнения. Има два начина, по които можем да интегрираме полиномиални функции в нашата програма. Можем да се възползваме от poly1d клас, който използва коефициенти или корените на полином за инициализиране на полином. Нека разгледаме един пример:

от numpy import poly1d
first_polynomial = poly1d ([3, 4, 7])
печат (първи_полином)

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

Ясно е, че полиномното представяне на уравнението се отпечатва като изход, така че резултатът е доста лесен за разбиране. Можем да изпълняваме различни операции и върху този полином, като го квадрат, да намерим производната му или дори да го решим за стойност x. Нека се опитаме да направим всичко това в следващия пример:

print ("Полиномиален квадрат: \ n")
печат (първи_полином * първи_полином)
print ("Производно на полином: \ n")
print (first_polynomial.deriv ())
print ("Решаване на полинома: \ n")
print (first_polynomial (3))

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

Точно когато си мислех, че това е всичко, което можем да направим със SciPy, си спомних, че можем да интегрираме и полином. Нека да пуснем последен пример с полиноми:

print ("Интегриране на полинома: \ n")
print (first_polynomial.integ (1))

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

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

Решаване на линейни уравнения

Възможно е дори да се решат линейни уравнения със SciPy и да се открият техните корени, ако те съществуват. За да решим линейни уравнения, представяме набора от уравнения като масиви NumPy и тяхното решение като отделни масиви NumPy. Нека да го визуализираме с пример, когато правим същото и се възползваме линалг пакет за намиране на корените на уравненията, ето уравненията, които ще решаваме:

1x + 5y = 6
3x + 7y = 9

Нека решим горните уравнения:

от scipy import linalg
уравнение = np.масив ([[1, 5], [3, 7]])
решение = np.масив ([[6], [9]])
корени = линалг.решаване (уравнение, решение)
print ("Намериха корените:")
печат (корени)
print ("\ n Точковият продукт трябва да е нула, ако решенията са правилни:")
печат (уравнение.точка (корени) - разтвор)

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

Трансформации на Фурие със SciPy

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

Нека разгледаме прост пример за преобразувания на Фурие, където начертаваме сумата от два косинуса, използвайки библиотеката Matplotlib:

от scipy.импортиране на fftpack
# Брой точки за проба
N = 500
# разстояния между пробите
Т = 1.0/800.0
x = np.linspace (0.0, N * T, N)
y = np.cos (50.0 * 2.0 * np.pi * x) + 0.5 * np.cos (80.0 * 2.0 * np.pi * x)
yf = fft (y)
xf = np.linspace (0.0, 1.0 / (2.0 * T), N // 2)
# matplotlib за целите на начертаването
импортиране на matplotlib.pyplot като plt
plt.парцел (xf, 2.0 / N * np.абс (yf [0: N // 2]))
plt.заглавие („Информация“)
plt.ylabel ('ос Y')
plt.xlabel ('ос X')
plt.решетка ()
plt.покажи ()

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

Това е един от добрите примери, когато виждаме, че SciPy се използва в сложно математическо уравнение за лесно визуализиране на нещата.

Вектори и матрица със SciPy

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

Точно както разгледахме решаването на линейни уравнения със SciPy, можем да представим вектори с np.масив () функции. Нека започнем с изграждането на матрица:

my_matrix = np.матрица (np.случайни.произволно ((3, 3)))
печат (my_matrix)

Ето резултата от горния фрагмент:

Винаги, когато говорим за матрици, винаги говорим за собствени стойности и собствени вектори. Казано с прости думи, собствените вектори са векторите, които, умножени с матрица, не променят посоката си, за разлика от повечето вектори. Това означава, че дори когато умножавате собствени вектори с матрица, съществува стойност (или собствена стойност), която е един от факторите на умножението. Това означава:

Ax = λx.

В горното уравнение A е матрицата, λ е собствената стойност и x е векторът. Нека напишем прост кодов фрагмент, за да намерим собствените стойности за даден вектор:

la, вектор = linalg.eig (my_matrix)
печат (вектор [:, 0])
печат (вектор [:, 1])
печат (linalg.eigvals (my_matrix))

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

Детерминант за изчисляване на матрицата

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

линалг.det (my_matrix)

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

Заключение

В този урок разгледахме много добри примери, при които SciPy може да ни помогне, като извърши сложни математически изчисления за нас с лесен за използване API и пакети.

Топ 5 продукти за ергономична компютърна мишка за Linux
Продължителната употреба на компютър причинява ли болка в китката или пръстите? Страдате ли от схванати стави и постоянно ли ви се налага да си ръкува...
Как да променяте настройките на мишката и тъчпада с помощта на Xinput в Linux
Повечето дистрибуции на Linux се доставят с библиотека “libinput” по подразбиране за обработка на входни събития в системата. Той може да обработва вх...
Пренастройте бутоните на мишката си по различен начин за различен софтуер с X-Mouse Button Control
Може би се нуждаете от инструмент, който може да промени контрола на мишката с всяко приложение, което използвате. Ако случаят е такъв, можете да изпр...