Автор оригинала: 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 помогает нам выполнять различные математические операции.
Ссылка: Официальный веб-сайт