Scipy模块
1、关于文件保存和读取操作,有多种方式,比如
使用scipy中的io的io.savemat()和io.loadmat();
对于图片可以使用scipy中的misc的misc.imread () 或者matplotlib中的pyplot的pyplot.imread()
其中,numpy也提供text files的操作:numpy.loadtxt()和numpy.savetxt()
对于读取text和csv文件,还有numpy.genfromtxt()和numpy.recfromcsv()
比较高效,特定于numpy的二进制形式的numpy.save()和numpy.load()
更高级的图片输入输出方式有skimage.io
2、线性代数操作scipy.linalg
比如求行列式的值,可以用linalg.det(A),其中A是numpy定义的方阵;
比如求方阵的逆矩阵,可以用linalg.inv(arr),如果arr是奇异矩阵,则会引起错误;
SVD有uarr, spec, vharr = linalg.svd(arr),其中,urarr, spec, vharr可以重新组合逼进原矩阵,具体地:
sarr = np.diag(spec) >>> svd_mat = uarr.dot(sarr).dot(vharr) >>> np.allclose(svd_mat, arr) True
3、插值运算:scipy.interpolate
对于1维的插值函数,有linear_interp = interp1d(measured_time, measures)
其中,可通过设置参数kind='cubic'改更插值类型,默认是线性插值
4、优化和拟合:scipy.optimize
curve_fit(), minimize(f, x0, method="L-BFGS-B"), basinhopping用来找全局最优;可设置参数除了method外还有bounds, 如bounds=((0,10), )
minimize_scalar()
如果函数中有多个自变量,可以将变量写成向量的形式;
root找到函数为0的变量;
5、图像的几何形变, from scipy import ndimage # shift, roate, zoom
6、图像膨胀 腐蚀操作ndimage.binary_opening(img) .binary_closing(img)
7、对图像中不同区域块用不同颜色作为不同标签,可以用ndimage.label(mask)方法