Автор оригинала: Pankaj Kumar.
Python SciPy – это библиотека, в которой в качестве строительных блоков используются Python NumPy и математические алгоритмы. Библиотека Python SciPy широко используется в области научных вычислений и обработки.
Начало работы с Python Scipy
Чтобы использовать различные функции, предлагаемые библиотекой SciPy, нам необходимо установить ее. Для достижения этой цели мы будем использовать команду pip
для установки библиотеки SciPy.
pip install scipy
Чтобы использовать функции этой библиотеки, нам нужно будет импортировать эту библиотеку, используя следующую инструкцию:
import scipy
Субпакеты в Python SciPy
В библиотеке SciPy доступны различные подмодули для выполнения и повышения эффективности научных расчетов.
Некоторые из популярных подмодулей библиотеки SciPy перечислены ниже:
- специальный : Этот подмодуль содержит Специальные функции для выполнения конкретной задачи.
- константы : Представляет константы.
- optimize : Этот подмодуль содержит алгоритмы оптимизации.
- integrate : Этот подмодуль содержит функции для выполнения математической интеграции.
- интерполировать : Представляет функции для выполнения интерполяции.
- linalg : Представляет функции для выполнения операций над уравнениями линейной алгебры.
- io : Он содержит функции для выполнения операций ввода-вывода на данном входе.
- fftpack : Представляет функции для выполнения дискретного преобразования Фурье.
- signal : Представляет функции и инструменты для обработки сигналов в Python.
- sparse : Представляет алгоритмы для работы с разреженными матрицами.
- cluster : Представляет функции для выполнения иерархической кластеризации.
Линейная алгебра с Python SciPy
Линейная алгебра представляет линейные уравнения и представляет их с помощью матриц.
Подмодуль linalg
библиотеки SciPy используется для выполнения всех функций, связанных с линейными уравнениями. Он преобразует объект в 2-D массив NumPy, а затем выполняет задачу.
1. Решение системы уравнений
Давайте разберемся в работе подмодуля linalg вместе с линейными уравнениями с помощью примера:
4x+3y=12 3x+4y=18
Рассмотрим приведенные выше линейные уравнения. Давайте решим уравнения с помощью функции linalg.dsolve ()
.
from scipy import linalg import numpy X=numpy.array([[4,3],[3,4]]) Y=numpy.array([[12],[18]]) print(linalg.solve(X,Y)) X.dot(linalg.solve(X,Y))-Y
В приведенном выше фрагменте кода мы передали коэффициенты и постоянные значения, присутствующие во входных уравнениях, через функцию numpy.array ().
Далее, linalg. функция solve()
решает линейные уравнения и отображает значение x и y, которое работает для этого конкретного уравнения. equation1.dot(linalg.solve())-команда equation2
используется для проверки вывода уравнений.
Выход:
[[-0.85714286] [ 5.14285714]] array([[0.], [0.]])
массив([[0.], [0.]]) гарантирует, что линейные уравнения были правильно решены.
[[-0.85714286] [ 5.14285714]] : Это значения x и y, используемые для решения линейных уравнений.
2. Нахождение детерминант матриц
Метод linalg.det()
используется для поиска определителя входной матрицы.
Пример :
from scipy import linalg import numpy determinant=numpy.array([[2,4],[4,12]]) linalg.det(determinant)
Выход:
8.0
3. Вычисление обратной матрицы
Метод linalg.inv()
используется для вычисления обратной входной матрицы.
Пример:
from scipy import linalg import numpy inverse=numpy.array([[2,4],[4,12]]) linalg.inv(inverse)
Выход:
array([[ 1.5 , -0.5 ], [-0.5 , 0.25]])
Выполнение вычислений по многочленам с помощью Python SciPy
Подмодуль poly1d
библиотеки SciPy используется для выполнения манипуляций с 1-d полиномами. Он принимает коэффициенты в качестве входных данных и формирует полиномиальные объекты.
Давайте разберемся в подмодуле poly1d с помощью примера.
Пример:
from numpy import poly1d # Creation of a polynomial object using coefficients as inputs through poly1d poly_input = poly1d([2, 4, 6, 8]) print(poly_input) # Performing integration for value = 4 print("\nIntegration of the input polynomial: \n") print(poly_input.integ(k=3)) # Performing derivation print("\nDerivation of the input polynomial: \n") print(poly_input.deriv())
В приведенном выше фрагменте кода poly1d()
используется для принятия коэффициентов полинома.
Далее, polynomial.integer(value)
используется для нахождения интегрирования входного полинома вокруг входного скалярного значения. Функция polynomial.deriv()
используется для вычисления вывода входного полинома.
Выход:
3 2 2 x + 4 x + 6 x + 8 Integration of the input polynomial: 4 3 2 0.5 x + 1.333 x + 3 x + 8 x + 3 Derivation of the input polynomial: 2 6 x + 8 x + 6
Выполнение интеграции с Python SciPy
Подмодуль integrate
библиотеки SciPy используется для выполнения интегрирования входных уравнений.
Давайте выполним интегрирование по следующему уравнению:
3*x*2 + 2*x + 6
from scipy import integrate integrate.quad(lambda x:3*x*2 + 2*x + 6,0,2)
В приведенном выше фрагменте кода функция integrate.quad()
используется для вычисления интегрирования входного уравнения. Он принимает следующие аргументы:
- уравнение
- верхний предел
- нижний предел
Выход:
(28.0, 3.1086244689504383e-13)
Преобразования Фурье с помощью Python SciPy
Преобразования Фурье позволяют нам понимать и изображать функции как суммирование периодических компонент.
Подмодуль fftpack
библиотеки SciPy используется для выполнения преобразований Фурье в уравнениях.
Пример:
from scipy.fftpack import fft import numpy as np # Count of sample points n = 400 # sample spacing T = 1.0 / 500.0 x_i = np.linspace(0.0, n*T, n) y_i = np.tan(70.0 * 2.0*np.pi*x_i) + 0.5*np.tan(70.0 * 2.0*np.pi*x_i) y_f = fft(y_i) x_f = np.linspace(0.0, 1.0/(3.0*T), n//2) # matplotlib for plotting purposes import matplotlib.pyplot as plt plt.plot(x_f, 2.0/n * np.abs(y_f[0:n//2])) plt.show()
В приведенном выше фрагменте кода мы использовали функцию numpy.linspace() для получения равномерно распределенных целых чисел. Далее, функция fft()
используется для вычисления значения Фурье входного сигнала. Мы использовали модуль Python matplotlib для построения графика Касательной .
Выход:
Специальные функции Python SciPy
Ниже приведен список некоторых наиболее часто используемых специальных функций из пакета special
SciPy:
- Кубический корень
- Экспоненциальная функция
- Экспоненциальная функция Логарифмической Суммы
- Гамма
1. Кубический корень
Функция scipy.special.cbrt()
используется для предоставления элементного кубического корня предоставленных входных данных.
Пример:
from scipy.special import cbrt val = cbrt([27, 8]) print(val)
Выход:
[3. 2.]
2. Экспоненциальная функция
Функция scipy.special.exp10()
используется для вычисления экспоненты по элементам данных входных данных.
Пример:
from scipy.special import exp10 val = exp10([27, 8]) print(val)
Выход:
[1.e+27 1.e+08]
3. Экспоненциальная Функция Логарифмической Суммы
Функция scipy.special.logsumexp()
используется для вычисления логарифмического значения суммы показателей входных элементов.
Пример:
from scipy.special import logsumexp import numpy as np inp = np.arange(5) val = logsumexp(inp) print(val)
Здесь функция numpy.arange() используется для генерации последовательности чисел, которые будут переданы в качестве входных данных.
Вывод :
4.451914395937593
4. Гамма-функция
Гамма – функция используется для вычисления значения гамма, называемого обобщенным факториалом, потому что, гамма(n+1)!
Функция scipy.special.gamma()
используется для вычисления значения гамма входного элемента.
Пример:
from scipy.special import gamma val = gamma([5, 0.8, 2, 0]) print(val)
Выход:
[24. 1.16422971 1. inf]
Функции интерполяции
Интерполяция-это процесс поиска значений между двумя или более точками на кривой, линии и т. Д.
Пакет scipy.interpolate
используется для выполнения интерполяции на конкретном графике.
Пример:
import numpy as np from scipy import interpolate import matplotlib.pyplot as p a = np.linspace(0, 4, 12) b = np.sin(x**2/3+4) print(a,b) p.plot(a, b, 'o') # Plotting the graph assuming a and b arrays as x and y dimensions p.show()
В приведенном выше фрагменте кода мы создали синусоидальную волну и построили значения, используя Python PyPlot пакет модуля Matplotlib|/.
Выход:
[0. 0.36363636 0.72727273 1.09090909 1.45454545 1.81818182 2.18181818 2.54545455 2.90909091 3.27272727 3.63636364 4. ] [-0.7568025 -0.78486887 -0.85971727 -0.9505809 -0.9999744 -0.92508408 -0.64146657 -0.12309271 0.51220599 0.96001691 0.85056799 0.09131724]
Вывод
Таким образом, в этой статье мы поняли функции, выполняемые библиотекой Python SciPy.
Рекомендации
Рекомендуемое чтение: Учебник по Python Matplotlib и Python NumPy