SciPy简介
SciPy,发音为Sigh Pi,是一个python开源库,在BSD授权下发布,主要用于数学、科学和工程计算。
SciPy库依赖于NumPy,NumPy提供了方便和快速的n维数组操作。它们一起可以运行在所有流行的操作系统上,安装简单,使用免费。
现在,组合使用NumPy、SciPy和Matplotlib,作为MATLAB的替代品已经成为趋势。相比MATLAB,Python功能更强大、编程更容易。
SciPy模块
根据针对的计算领域,SciPy被分成各个不同的模块。下表对这些模块进行了总结:
库名称 | 功能 |
---|---|
scipy.cluster Vector quantization / Kmeans scipy.constants | 物理和数学常数 |
scipy.fftpack | 傅里叶变换 |
scipy.integrate | 积分 |
scipy.interpolate | 插值 |
scipy.io | 文件 |
scipy.linalg | 线性代数 |
scipy.optimize | 优化 |
scipy.ndimage | 多维图像处理 |
scipy.signal | 信号处理 |
scipy.sparse | 稀疏矩阵 |
scipy.special | 特殊函数 |
scipy.stats | 统计 |
SciPy参考学习网站
课堂练习
题目1 随机产生一个5行3列的矩阵(元素值的范围1-100),使用scipy计算行与行的距离。
import scipy.spatial.distance
import numpy as np
A = np.random.randint(0,101,[5,3]) #随机生成矩阵各个元素
#print(A)
X=scipy.spatial.distance.pdist(A) #计算行与行之间的距离
print(X)
输出结果:
题目2 使用scipy计算如下函数的最大值。
f
(
x
)
=
s
i
n
2
(
x
−
2
)
×
e
−
x
2
f(x)=sin^2(x-2)×e^{-x^2}
f(x)=sin2(x−2)×e−x2
import scipy.optimize
import numpy as np
def f(x):
return -np.sin(x-2)**2 * np.exp(-x*x)
#scipy提供求最小值所在位置的函数,通过计算相反数来计算最大值
max_x=scipy.optimize.fmin( f ,0)
print( -f(max_x) )
输出结果: