scipy
文章
1introduction
功能概述SciPy is a collection of mathematical algorithms and convenience functions built on the NumPy extension of Python. Scipy是一个高级的科学计算库,建立在低一级的numpy的多维数组之上。Scipy有很多子模块可以完成不同的操作,如傅里叶变换、插值运算、优化算法和数学统计等。Scipy的常用的子模块如下: 1234567891011121314151617scipy.cluster 向量量化k-meansscipy.constants 数学常量scipy.fftpack 快速傅里叶变换scipy.integrate 积分scipy.interpolate 插值scipy.io 数据输入输出scipy.linalg 线性代数scipy.ndimage N维图像scipy.odr 正交距离回归scipy.opti...
2special
Bessel functions of real order bassel函数 $$x^2\frac{d^2y}{dx^2}+x\frac{dy}{dx}+(x^2-\alpha^2)y=0$$ 1234567891011121314151617181920from scipy import specialdef 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(...
3integrate
BreifThe scipy.integrate sub-package provides several integration techniques including an ordinary differential equation integrator. 12345678910111213141516171819202122232425>>> help(integrate) Methods for Integrating Functions given function object. quad -- General purpose integration. dblquad -- General purpose double integration. tplquad -- General purpose triple integration. fixed_quad -- Integrate func(x) using Gaussian quadrature of order n. qu...
4optimize
优化算法scipy.optimize包提供了几种常用的优化算法。 使用各种算法(例如BFGS,Nelder-Mead单纯形,牛顿共轭梯度,COBYLA或SLSQP)的无约束和约束最小化多元标量函数(minimize()) 全局(蛮力)优化程序(例如,anneal(),basinhopping()) 最小二乘最小化(leastsq())和曲线拟合(curve_fit())算法 标量单变量函数最小化(minim_scalar())和根查找(newton()) 使用多种算法(例如,Powell,Levenberg-Marquardt混合或Newton-Krylov等大规模方法)的多元方程系统求解(root)
5interpolate
定义插值是在直线或曲线上的两点之间找到值的过程。 为了帮助记住它的含义,我们应该将“inter”这个词的第一部分想象为“输入”,表示要查看原来数据的“内部”。 这种插值工具不仅适用于统计学,而且在科学,商业或需要预测两个现有数据点内的值时也很有用。 123456789import numpy as npfrom scipy import interpolateimport matplotlib.pyplot as pltx = np.linspace(0, 4, 12)y = np.cos(x**2/3+4)plt.plot(x, y,’o’)plt.show() 一维插值一维插值scipy.interpolate中的interp1d类是一种创建基于固定数据点的函数的便捷方法,可以使用线性插值在给定数据定义的域内的任意位置评估该函数。通过使用上述数据,创建一个插值函数并绘制一个新的插值图。 12345f1 = interp1d(x, y,kind = 'linear')f2 = interp1d(x, y, kind = 'cubic'
6fft
傅里叶变换对时域信号计算傅里叶变换以检查其在频域中的行为。 傅里叶变换可用于信号和噪声处理,图像处理,音频信号处理等领域。SciPy提供fftpack模块,可让用户计算快速傅立叶变换。以下是一个正弦函数的例子,它将用于使用fftpack模块计算傅里叶变换。 一维傅里叶变换123456789#Importing the fft and inverse fft functions from fftpackagefrom scipy.fftpack import fft#create an array with random n numbersx = np.array([1.0, 2.0, 1.0, -1.0, 1.5])#Applying the fft functiony = fft(x)print (y) 离散余弦变换123from scipy.fftpack import dctmydict = dct(np.array([4., 3., 5., 10., 5., 3.]))print(mydict)
8linalg
线性代数简介SciPy是使用优化的ATLAS LAPACK和BLAS库构建的。 它具有非常快的线性代数能力。 所有这些线性代数例程都需要一个可以转换为二维数组的对象。 这些例程的输出也是一个二维数组。 SciPy.linalg与NumPy.linalgscipy.linalg包含numpy.linalg中的所有函数。 另外,scipy.linalg还有一些不在numpy.linalg中的高级函数。 在numpy.linalg上使用scipy.linalg的另一个优点是它总是用BLAS/LAPACK支持编译,而对于NumPy,这是可选的。 因此,根据NumPy的安装方式,SciPy版本可能会更快。 线性方程组数学实例scipy.linalg.solve特征为未知的x,y值求解线性方程a * x + b * y = Z。作为一个例子,假设需要解下面的联立方程。 123x+3y+5z=102x+5y+z=82x+3y+8z=3 要求解x,y,z值的上述方程式,可以使用矩阵求逆来求解向量,如下所示。$$A[x,y,z]^T=[10,8,3]^T\[x,y,z...














