傅里叶级数转换介绍
图片灰度处理 用二维数组展示的图片,没有RGB三原色,只有一个灰度值 # 利用数组随机数生成一个图片 data = np.random.randint(0,255,size=(1000,1000,3)) # astype 用来转换数组中数据的类型 plt.imshow(data.astype(np.uint8)) jpg图像和png图像的区别 jpg图像 3个0-255之间的uint8类型整数来表示颜色png图像 3个0-1之间的float32类型小数来表示颜色 back = plt.imread('back.jpg') back.shape ==> (506, 900, 3) back.dtype ==>dtype('uint8') back.max(), back.min() ==>(255, 0) #取最大值或最小值 back.max(axis=2).shape plt.imshow(back.max(axis=2)) #取平均值 plt.imshow(back.mean(axis=2)) #用点乘积引入权重 weight = np.array([0.3,0.4,0.3]) plt.imshow(np.dot(back, weight), cmap="gray")原照片 处理后
随机生成数组,使用scipy中的io.savemat()保存 文件格式是.mat,标准的二进制文件
import scipy.io as scio 使用io.savemat()保存图片,数据必须用字典格式 #scio.savemat(file_name, mdict, appendmat=True, format='5', long_field_names=False, do_compression=False, oned_as='row') scio.savemat('back.mat',{"data":back}) 使用io.loadmat()读取数据 # scio.loadmat(file_name, mdict=None, appendmat=True, **kwargs) scio.loadmat('back.mat')["data"] #展示数据 plt.imshow(scio.loadmat('back.mat')["data"])使用scipy.misc.face(gray=True)获取图片,使用ndimage移动坐标、旋转图片、切割图片、缩放图片
from scipy import ndimage # 1.shift移动坐标 ''' ndimage.shift(input, shift, output=None, order=3, mode='constant', cval=0.0, prefilter=True) mode(移动图片后空余部分的填充方式) 可选参数 'constant', 'nearest', 'reflect', 'mirror' or 'wrap' shift 移动的范围,给定的数值是float则x,y移动相同距离,也可以给定一个列表 ''' plt.imshow(ndimage.shift(face,shift=200,mode="constant"), cmap="gray") plt.imshow(ndimage.shift(face,shift=[100,100],mode="mirror")) # rotate旋转图片 ''' ndimage.rotate(input, angle, axes=(1, 0), reshape=True, output=None, order=3, mode='constant', cval=0.0, prefilter=True) ''' plt.imshow(ndimage.rotate(face, angle=60)) # zoom缩放图片 ''' ndimage.zoom(input, zoom, output=None, order=3, mode='constant', cval=0.0, prefilter=True) zoom接受一个比例列表,表示不同的轴上的比值 ''' plt.imshow(ndimage.zoom(face,zoom=0.5)) plt.imshow(ndimage.zoom(face,zoom=[0.3,2])) 图片进行过滤 添加噪声,对噪声图片使用ndimage中的高斯滤波、中值滤波、signal中维纳滤波进行处理 使图片变清楚 # 加载图片,使用灰色图片misc.face()添加噪声 moon = plt.imread('moonlanding.png') plt.imshow(moon, cmap="gray") #gaussian高斯滤波参数sigma:高斯核的标准偏差 ''' ndimage.gaussian_filter(input, sigma, order=0, output=None, mode='reflect', cval=0.0, truncate=4.0) ''' plt.imshow(ndimage.gaussian_filter(moon, sigma=0.8), cmap="gray") #median中值滤波 ''' ndimage.median_filter(input, size=None, footprint=None, output=None, mode='reflect', cval=0.0, origin=0) 参数size:给出在每个元素上从输入数组中取出的形状位置,定义过滤器功能的输入 ''' plt.imshow(ndimage.median_filter(moon, size=6), cmap="gray") #signal维纳滤波 ''' signal.wiener(im, mysize=None, noise=None) 参数mysize:滤镜尺寸的标量 ''' import scipy.signal as signal plt.imshow(signal.wiener(moon, mysize=6), cmap="gray")Series和DataFrame都有一个用于生成各类图表的plot方法。默认情况下,它们所生成的是线形图
matplotlib来绘制格式: s.plot(kind=‘line’, ax=None, figsize=None, use_index=True, title=None, grid=None, legend=False, style=None, logx=False, logy=False, loglog=False, xticks=None, yticks=None, xlim=None, ylim=None, rot=None, fontsize=None, colormap=None, table=False, yerr=None, xerr=None, label=None, secondary_y=False, **kwds) 参数kind用来指定绘制图像类型: ‘line’ : line plot (default)‘bar’ : vertical bar plot‘barh’ : horizontal bar plot‘hist’ : histogram‘box’ : boxplot‘kde’ : Kernel Density Estimation plot‘density’ : same as ‘kde’‘area’ : area plot‘pie’ : pie plot # pandas整合的一些图形的绘制办法 # 绘图要先导入包 import numpy as np import pandas as pd from pandas import Series,DataFrame import matplotlib.pyplot as plt # 在当前文本编辑器中绘制图像 %matplotlib inline图一 图二
Series柱状图示例,kind = ‘bar’/‘barh’
一般用于数据间的横向比较 # 1.Series 数据 data = [10,16,19,18] # 默认不支持汉语显示 x = ["tom","jack","lucy","mery"] s = Series(data=data, index=x) s.plot(kind="bar") # 2.DataFrame数据 df = DataFrame({ "python":[89,78,99], "C":[70,75,80], "PHP":[11,15,10] }, index=["tom","lucy","jack"]) df.plot(kind="bar")Series DataFrame
散布图矩阵,当有多个点时,两两点的关系
使用函数:pd.plotting.scatter_matrix(),
pd.plotting.scatter_matrix(frame, alpha=0.5, figsize=None, ax=None, grid=False, diagonal=‘hist’, marker=’.’, density_kwds=None, hist_kwds=None, range_padding=0.05, **kwds)
参数diagnol:设置对角线的图像类型
pd.plotting.scatter_matrix(df,diagonal="hist")