1 python数据分析numpy基础之meshgrid生成网格点坐标
python的numpy库的meshgrid()函数用于生成网格点的坐标矩阵。
用法
numpy.meshgrid(*xi, copy=True, sparse=False, indexing='xy')
描述
返回坐标向量中的坐标矩阵列表。
入参
- *xi:可选,array_like
x1,x2,…,xn,表示网格坐标的一维数组;
- copy:可选,bool
默认为True,表示复制原始数组的视图,False则不复制,直接返回原始数组的视图;
- sparse:可选,bool
默认为False,表示不返回稀疏矩阵,True表示返回稀疏矩阵;
- indexing:可选,{‘xy’,’ij’}
用于指定输出的网格数组的索引顺序,该参数的取值可以是’xy’或’ij’;
1.1 入参xi
numpy.meshgrid()的入参xi为必选入参,表示网格坐标的一维数组。
如果xi送2个一维数组x和y,那么一维数组x,对应网格点的横坐标向量;
一维数组y,对应网格点的纵坐标向量。
如果xs,ys=np.meshgrid(x,y),那么xs和ys就是坐标矩阵。
x一维数组的大小为C,y一维数组的大小为R,那么xs和ys坐标矩阵大小为(R,C)。
如上图中,假设横轴为X轴,纵轴为Y轴,那么每个红色的点可以用X轴上的坐标和Y轴上的坐标唯一确定。在X轴和Y轴垂直的情况下,X轴的坐标表示到Y轴的距离,Y轴的坐标表示到X轴的距离,
每个红色的点都是网格线交叉而成,称为网格点,网格点用网格坐标表示。
比如,上图的红色点可以通过x=1(2,3,4)的直线(网格线),与y=5(6,7,8,9)的直线交叉形成。
将这些红色网格点的X轴坐标用矩阵表示,形成5×4(5行4列)的X坐标矩阵,如下:
将这些红色网格点的Y轴坐标用矩阵表示,形成5×4(5行4列)的Y坐标矩阵,如下:
X和Y坐标矩阵的行列值相等,因为他们由相同的网格点拆分而成。
X和Y坐标矩阵,都有5行,对应Y轴的y直线条数共5条(y=5,6,7,8,9);都有4列,对应X轴的x直线条数共4条(x=1,2,3,4)。
X和Y的坐标矩阵的坐标值,组成红色点的坐标。
比如,红色点A坐标值(1,5),由X坐标矩阵的X01(1)和Y坐标矩阵的Y01(5)组成,即A坐标为(X01, Y01),即(1,5)。
X和Y坐标矩阵可以通过numpy.meshgrid()生成。
将x直线值(1,2,3,4)组成的一维数组,和y直线值(5,6,7,8,9)组成的一维数组,送给xi调用numpy.meshgrid()函数,就可以获取X和Y坐标矩阵。
>>> import numpy as np
# xi送2个列表,返回2个二维数组组成的列表
>>> xy=np.meshgrid([1,2,3],[4,5,6])
>>> xy
[array([[1, 2, 3],
[1, 2, 3],
[1, 2, 3]]), array([[4, 4, 4],
[5, 5, 5],
[6, 6, 6]])]
>>> x=np.array([1,2,3])
>>> y=np