Numpy+Matplotlib

Numpy(Numeric Python)

##下面代码都默认省略下俩行
import numpy as np
import matplotlib.plot as plt 

创建矩阵

将list转换为矩阵

a=[[1,2],[3,4]]
np.array(a)
#将List转换为矩阵

产生连续数字的行矩阵

np.arange(n)
#[0,1,,,n-1]

从文件导入矩阵

np.loadtxt('a.txt',delimiter=' ',skiprows=0,usecols=(0,1),unpack=False,dtype=float,comments='#')
#delimiter分隔符,skiprows忽略前n行,usecols取那几列,unpack是否分列读取,dtype数据类型,comments跳过开头为#的行

产生矩阵

np.random.randint(min,max,n)
#产生包含n个随机元素(含头不含尾)的行矩阵
np.random.randint(a,b,size=(c,d))
#产生a行b列的范围在(c,d)的随机矩阵
np.random.normal(min,max,n)
#产生符合正态分布包含n个随机元素(含头不含尾)的行矩阵
np.random.rand(a,b)
#产生a行b列的随机矩阵
np.ones((2,1))
#产生全是1的矩阵

Meshgrid

a = np.array([1,2,3])
#相当于x轴取值
b = np.array([7,8])
#相当于y轴取值
# 返回list,有两个元素,第一个元素是X轴的取值,第二个元素是Y轴的取值
res = np.meshgrid(a,b)
#返回结果: [array([ [1,2,3] [1,2,3] ]), array([ [7,7,7] [8,8,8] ])],两个矩阵一一对应正好是所有的坐标轴上的点

常见矩阵操作及函数

矩阵操作

a+b
#+-*/都是逐元素运算
a.dot(b)
#矩阵乘法
a.transpose()
a.T
#转置矩阵
a.reshape(1,2)
#改变shape
np.vstack((a,b))
#上下结合
np.hstack((a,b))
#左右结合
a[:,n]
#取第n列
a[n,:]
#取第n行

矩阵函数

x=np.max(c,n)
x.max(n)
#矩阵最大值,n=0求各列的和,n=1求各行de
x=np.min(c)
#矩阵最小值
x=np.mean(c)
#矩阵均值
np.sort(c)
#不会改变c,返回更改后的数据
c.sort()
#会改变c,返回空

Figure

标识一个Figure

plt.figure(num=3,figsize=(8,5))
#num标识一个图片,figsize图片长宽比例

Subplot

plt.figrue()
plt.subplot(2,2,1)
#将图片分为2*2的小块,在第1个小块上作图
plt.plpt([0,1],[0,1])

绘制Figure

plt.plot(x,y,color='r',linewidth='10',linestyle)
#linewidth指明线宽度

坐标轴范围,标识文字,置换下标数字

plt.xlim((1,3))
#设置x轴从1到3
plt.xlabel('x轴')
plt.xticks(np.linespace(1,3,3))
#x轴是1,2,3
plt.yticks([1,2,3],['a','b','c'])
#指定位置替换问文字

坐标轴位置,颜色

ax=plt.gca()
#获取坐标轴对象
ax.spines['right'].set_color('none')
#设置右边轴颜色为无,位置有left,right,top,bottom
ax.spines['bottom'].set_position(('data',n))
#将x轴0点设置在y轴n点的位置

图例Legend

plt.plot(x, y, c='g',label='B',handles=[f1,f2],loc='best')
#在plot中设置label
plt.plot(x,y,handles=[f1,f2,],label=['a','b'],loc='best')
#handles里面是一个个元组形式的plot的对象,label对应plot对象,loc位置
plt.legend()
#打印图例

注解

plt.annotate('what',xy=(1,1),frontsize=16)
#字符串,xy位置,frontsize字体大小
plt.text(x,y,'what',fontdict={'size':16,'color':'r'})
#x,y位置,字符串,字体大小,位置

散点图

plt.scatter(x,y,s=100,c='r',marker='x',alpha=0.5)
#x横轴,y纵轴,size大小,color颜色,marker点形状,alpha透明度
plt.show()
#绘制散点图

折线图

plt.plot(x,y,s=100,c='r',marker='x',alpha=0.5)
#x横轴,y纵轴,size大小,color颜色,marker点形状,alpha透明度
plt.show()
#绘制折线图

横轴是时间的图

plt.plot_date(date,data,linestyle'-')
#date时间,date数据,linestyle线条风格,-代表线性

柱状图

mp.plot_date(x,y,facecolor='r',edgecolor='w')
#x,y数据,facecolor柱体颜色,edgecolor边缘颜色

等高线图Contour

plt.contourf(x,y,z,n,alpha=0.75,cmap=plt.cm.hot)
#x,y坐标轴范围,z高度(x.size*y.size矩阵),n高度分成n+2层,alpha透明度,cmap图形风格
c=plt.contour(x,y,z,c='k')
#绘制等高线,c颜色
plt.clabel(c,inline=1,fontsize=10)
#c等高线对象,inline高度写在线中,fontsize字体大小
plt.colorbar()
#示例

矩阵可视化

plt.imshow(c,interpolation='nearest')
#c矩阵对象,interpolation图形风格

3D图形

from mpl_toolkits.mplot3d import Axes3D
fig=plt.figure()
x=np.linspace(-10,10,10)
y=np.linspace(-10,10,10)
X,Y=np.meshgrid(x,y)
Z=100-X**2-Y**2
ax=Axes3D(fig)
ax.plot_surface(X,Y,Z,rstride=1,cstride=1,cmap='rainbow')
#r/cstride行列跨度,cmap颜色风格
ax.contourf(X,Y,Z,zdir'x',offset=-4,cmap='rainbow')
#zdir压缩到该轴上,offset显示到轴的该位置,cmap色彩风格
plt.show()

猜你喜欢

转载自www.cnblogs.com/redo19990701/p/10680033.html