作用:生成网格点坐标矩阵。
可以生成多维坐标矩阵。
例如:
xx, yy = np.meshgrid(np.arange(x_min,x_max,h),np.arange(y_min,y_max,h))
生成两个三维网格坐标矩阵。坐标参数:x_min,x_max,h。
作用:扁平化操作。
例如:
from numpy import *
a = arange(12).reshape(3,4)
print(a)
# [[ 0 1 2 3]
# [ 4 5 6 7]
# [ 8 9 10 11]]
print(a.ravel())
# [ 0 1 2 3 4 5 6 7 8 9 10 11]
如果用flatten()结果也是一样的。
print(a.flatten())
# [ 0 1 2 3 4 5 6 7 8 9 10 11]
可以看到这两个函数实现的功能一样,但平时使用的时候flatten()更为合适。在使用过程中flatten()分配了新的内存,但ravel()返回的是一个数组的视图。
from numpy import *
a = arange(12).reshape(3,4)
print(a)
# [[ 0 1 2 3]
# [ 4 5 6 7]
# [ 8 9 10 11]]
# 创建一个和a相同内容的数组b
b = a.copy()
c = a.ravel()
d = b.flatten()
# 输出c和d数组
print(c)
# [ 0 1 2 3 4 5 6 7 8 9 10 11]
print(d)
# [ 0 1 2 3 4 5 6 7 8 9 10 11]
# 可以看到c和d数组都是扁平化后的数组,具有相同的内容
print(a is c)
# False
print(b is d)
# False
# 可以看到以上a,b,c,d是四个不同的对象
# 但因为c是a的一种展示方式,虽然他们是不同的对象,但在修改c的时候,a中相应的数也改变了
c[1] = 99
d[1] = 99
print(a)
# [[ 0 99 2 3]
# [ 4 5 6 7]
# [ 8 9 10 11]]
print(b)
# [[ 0 1 2 3]
# [ 4 5 6 7]
# [ 8 9 10 11]]
print(c)
# [ 0 99 2 3 4 5 6 7 8 9 10 11]
print(d)
# [ 0 99 2 3 4 5 6 7 8 9 10 11]
coutour([X, Y,] Z,[levels], **kwargs)
作用:绘制等高线的,contour和contourf都是画单位等高线图的,不同点在于contour()是绘制轮廓线,contourf()会填充轮廓。
参数:
①X,Y类似数组
②Z的位数是X的维数乘以Y的维数,可以看成X,Y张成的网络。
③当X,Y,Z都是2维数组时,它们的形状必须相同。如果都是1维数组时,len(X)是Z的列数,而len(Y)是Z中的行数。
④levels:int或者类似的数组
⑤确定轮廓线/区域的数量和位置
其他参数:
①aalpha:float
②alpha混合值,介于0(透明)和1(不透明)之间
③cmap:str或colormap
④Colormap用于将数据值(浮点数)从间隔转换为相应Colormap表示的RGBA颜色。用于将数据缩放到间隔中看 。
例如:
参考:https://blog.csdn.net/lens___/article/details/83960810
要画出等高线,核心函数是plt.contourf(),但在这个函数中输入的参数是x,y对应的网格数据以及此网格对应的高度值,因此我们调用np.meshgrid(x,y)把x,y值转换成网格数据:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# 计算x,y坐标对应的高度值
def f(x, y):
return (1-x/2+x**3+y**5) * np.exp(-x**2-y**2)
# 生成x,y的数据
n = 256
x = np.linspace(-3, 3, n)
y = np.linspace(-3, 3, n)
# 把x,y数据生成mesh网格状的数据,因为等高线的显示是在网格的基础上添加上高度值
X, Y = np.meshgrid(x, y)
# 填充等高线
plt.contourf(X, Y, f(X, Y))
# 显示图表
plt.show()