Автор оригинала: Pankaj Kumar.
Библиотека Scipy Python – это набор удобных функций, созданных на Numpy и математических алгоритмах.
Python Scipy
- В настоящее время Python Scipy Library поддерживает интеграцию, оптимизацию градиента, специальные функции, обыкновенные решатели дифференциального уравнения, параллельные инструменты программирования и многие другие; Другими словами, мы можем сказать, что, если что-то там в общем учебнике численного вычисления, есть высокие шансы, которые вы найдете его реализации в Scipy.
- Интерактивный сеанс с Scipy – это в основном среда обработки данных и системно-прототипирование, такая же, как Matlab, Octave, Scilab или R-лаборатория.
- Scipy – это проект с открытым исходным кодом, выпущенный под лицензией BSD.
Почему Scipy?
Scipy обеспечивает высокоуровневые команды и классы для манипуляций для данных и визуализации данных, что увеличивает мощность интерактивного заседания Python в результате значительного порядка.
В дополнение к математическим алгоритмам в Scipy, все из классов и подпрограммированных в Интернете и базы данных до параллельного программирования доступны для Python Programmer, что делает его проще и быстрее для разработки сложных и специализированных приложений.
Поскольку Scipy – это открытый источник, разработчики по всему миру могут способствовать разработке дополнительных модулей, которые очень полезны для научных приложений, использующих Scipy.
Установите Scipy Library
Мы обсудим некоторые основные функции и важные особенности Scipy, но до установки Scipy. Мы можем установить Scipy Packages, просто используя Пип , запустите следующую команду в терминале (Добавить Sudo Если вам нужно):
pip install scipy
Чтобы установить этот пакет с помощью Conda Run:
conda install -c anaconda scipy
Импортируя Scipy Library
Чтобы начать использовать Scipy в наших проектах Python, мы просто импортируем Scipy AS:
import scipy
Взаимодействие с numpy.
Как мы уже знаем, Scipy построен на Numpy, поэтому для всех основных нужд мы можем использовать сам функции Numpy:
import numpy
Функции от numpy и numpy.lib.cscimath Также содержатся в Scipy, но рекомендуется использовать их напрямую и не проходить через Scipy в этом случае.
Работа с полиномами
В Scipy есть два способа, которыми мы можем иметь дело с 1D полиномами. Первый использует класс Poly1d Отказ Этот класс принимает коэффициенты или корни для инициализации и образует полиномиальный объект. Когда мы распечатаем этот объект, мы увидим, что он печатает, как полиномиальный. Давайте посмотрим на пример код:
from numpy import poly1d
# We'll use some functions from numpy remember!!
# Creating a simple polynomial object using coefficients
somePolynomial = poly1d([1,2,3])
# Printing the result
# Notice how easy it is to read the polynomial this way
print(somePolynomial)
# Let's perform some manipulations
print("\nSquaring the polynomial: \n")
print(somePolynomial* somePolynomial)
#How about integration, we just have to call a function
# We just have to pass a constant say 3
print("\nIntegrating the polynomial: \n")
print(somePolynomial.integ(k=3))
#We can also find derivatives in similar way
print("\nFinding derivative of the polynomial: \n")
print(somePolynomial.deriv())
# We can also solve the polynomial for some value,
# let's try to solve it for 2
print("\nSolving the polynomial for 2: \n")
print(somePolynomial(2))
Программа при запуске дает вывод, как подпись ниже изображения, я надеюсь, что комментарии сделали его понятно, что каждый кусок кода пытается сделать:
Другой способ обрабатывать многочлен – использовать массив коэффициентов. Существуют функции для выполнения операций на полиномах, представленных в виде последовательностей, первый метод выглядит намного проще в использовании и дает производитель читабельной способ, поэтому я предпочитаю сначала для экземпляра.
Scipy пример – линейная алгебра
Scipy обладает очень быстрыми способностями линейной алгебры, так как он построен с использованием библиотек Atlas Papack и BLAS. Библиотеки даже доступны для использования, если вы хотите больше скорости, но вы должны глубоко копать в этом случае.
Все процедуры линейной алгебры в Scipy принимают объект, который может быть преобразован в 2D-массив, а выход имеет тот же тип.
Давайте посмотрим на подпрограмму линейной алгебры с помощью примера. Мы постараемся решить линейную систему алгебры, которую можно легко сделать с помощью Scipy Command lineg.solve Отказ
Этот метод ожидает входной матрицы и правой части вектора:
# Import required modules/ libraries
import numpy as np
from scipy import linalg
# We are trying to solve a linear algebra system which can be given as:
# 1x + 2y =5
# 3x + 4y =6
# Create input array
A= np.array([[1,2],[3,4]])
# Solution Array
B= np.array([[5],[6]])
# Solve the linear algebra
X= linalg.solve(A,B)
# Print results
print(X)
# Checking Results
print("\n Checking results, following vector should be all zeros")
print(A.dot(X)-B)
Давайте запустим этот сценарий сейчас:
Scipy Integration
Интегрирующий подпакет Scipy обеспечивает различные методы интеграции. Мы можем взглянуть на них просто, набрав:
help(integrate)
Давайте попробуем интегрировать лямбда в сценарии:
# Import required packages from scipy import integrate # Using quad as we can see in list quad is used for simple integration # arg1: A lambda function which returns x squared for every x # We'll be integrating this function # arg2: lower limit # arg3: upper limit result= integrate.quad(lambda x: x**2, 0,3) print(result)
Опять же, мы добавили достаточно комментариев, чтобы код был максимально понятен. Давайте запустим это сейчас:
Второй элемент в результате здесь возможен ошибка в результате, мы можем игнорировать его сейчас.
Scipy преобразования Фурье
Анализ Фурье помогает нам выразить функцию как сумму периодических компонентов и для восстановления сигнала от этих компонентов.
Давайте посмотрим на простой пример преобразования Фурье. Мы будем построить сумму двух синий:
# Import Fast Fourier Transformation requirements from scipy.fftpack import fft import numpy as np # Number of sample points N = 600 # sample spacing T = 1.0 / 800.0 x = np.linspace(0.0, N*T, N) y = np.sin(50.0 * 2.0*np.pi*x) + 0.5*np.sin(80.0 * 2.0*np.pi*x) yf = fft(y) xf = np.linspace(0.0, 1.0/(2.0*T), N//2) # matplotlib for plotting purposes import matplotlib.pyplot as plt plt.plot(xf, 2.0/N * np.abs(yf[0:N//2])) plt.grid() plt.show()
Выход должен быть похож на это:
Не к удивлению, Матплотлиб нарисовал график.
Scipy специальные функции
Специальный подпакет Scipy имеет определения многочисленных функций математической физики. Доступные функции включают Airy, Bessel, Beta, Elliptic, Gamma, гипергеометрические, кельвин, матье, параболический цилиндр, сфероидальную волну и Struve. Давайте посмотрим на функцию Бесселя.
Функции Бесселя – это семейство решений дифференциального уравнения Бесселя с реальным или сложным порядком альфа.
Давайте лучше посмотрим на него с помощью примера, пример имеет круглый барабан, навязанный на краю:
# Import special package
from scipy import special
import numpy as np
def drumhead_height(n, k, distance, angle, t):
kth_zero = special.jn_zeros(n, k)[-1]
return np.cos(t) * np.cos(n*angle) * special.jn(n, distance*kth_zero)
theta = np.r_[0:2*np.pi:50j]
radius = np.r_[0:1:50j]
x = np.array([r * np.cos(theta) for r in radius])
y = np.array([r * np.sin(theta) for r in radius])
z = np.array([drumhead_height(1, 1, r, theta, 0.5) for r in radius])
# Plot the results for visualization
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
fig = plt.figure()
ax = Axes3D(fig)
ax.plot_surface(x, y, z, rstride=1, cstride=1, cmap=cm.jet)
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
plt.show()
Код на рабочих участках следующий график:
Некоторые функции, такие как функция двоичных энтропий, функция шага Hebside и функция рампы, просты для реализации с помощью существующих функций Numpy и Scipy и, таким образом, не включены в этот пакет.
Резюме
В этом посте мы обнаружили, что библиотека Scipy Python для легких и эффективных математических операций.
Мы узнали, что это огромная библиотека, используемая для разработки научных приложений, и, где следует позаботиться о сложных и сложных математических операциях, как в машинном обучении/глубоком обучении. Мы также посмотрели на то, как Scipy Package помогает нам выполнять различные математические операции.
Ссылка: Официальный веб-сайт