linspace numpynumpy中的meshgrid函数的使⽤
meshgrid(*xi, **kwargs)
功能:从⼀个坐标向量中返回⼀个坐标矩阵
参数:
,xn:数组,⼀维的数组代表⽹格的坐标。
indexing:{'xy','ij'},笛卡尔坐标'xy'或矩阵'ij'下标作为输出,默认的是笛卡尔坐标。
sparse:bool类型,如果为True,返回⼀个稀疏矩阵保存在内存中,默认是False。
copy:bool类型,如果是False,返回⼀个原始数组的视图保存在内存中,默认是True。如果,sparse和copy都为False,将有可能返回⼀个不连续的数组。⽽且,如果⼴播数组的元素超过⼀个,可以使⽤⼀个独⽴的内存。如果想要对这个数组进⾏写操作,请先拷贝这个数组。
返回值:x1,x2,....,xn:ndarray(numpy数组)
可能看完官⽅的⽂档之后还是⼀脸懵逼,下⾯通过⼏个例⼦来解释说明⼀下。
nx,ny = (3,2)
#从0开始到1结束,返回⼀个numpy数组,nx代表数组中元素的个数
x = np.linspace(0,1,nx)
#[ 0. 0.5 1. ]
y = np.linspace(0,1,ny)
# [0. 1.]
xv,yv = np.meshgrid(x,y)
'''
xv
[[ 0. 0.5 1. ]
[ 0. 0.5 1. ]]
yv
[[ 0. 0. 0.]
[ 1. 1. 1.]]
'''
通过上⾯的例⼦,其实可以发现meshgrid函数将两个输⼊的数组x和y进⾏扩展,前⼀个的扩展与后⼀个有关,后⼀个的扩展与前⼀个有关,前⼀个是竖向扩展,后⼀个是横向扩展。因为,y的⼤⼩为2,所以x竖向扩展为原来的两倍,⽽x的⼤⼩为3,所以y横向扩展为原来的3倍。通过meshgrid函数之后,输⼊由原来的数组变成了⼀个矩阵。通过使⽤meshgrid函数,可以产⽣⼀个表格矩阵,下⾯⽤⼀个例⼦来展⽰产⽣⼀个2*2⽹格的坐标,每个⽹格的⼤⼩为1。
nx,ny = (3,3)
#从0开始到1结束,返回⼀个numpy数组,nx代表数组中元素的个数
x = np.linspace(0,2,nx)
# [0. 1. 2.]
y = np.linspace(0,2,ny)
# [0. 1. 2.]
xv,yv = np.meshgrid(x,y)
print(xv.ravel())
#[ 0. 1. 2. 0. 1. 2. 0. 1. 2.]
print(yv.ravel())
#[ 0. 0. 0. 1. 1. 1. 2. 2. 2.]
ravel函数是将矩阵变为⼀个⼀维的数组,其中xv.ravel()就表⽰x轴的坐标,yv.ravel()就表⽰了y轴的坐标,我们将x轴的坐标和y轴的坐标进⾏⼀⼀对应,就产⽣了⼀个2*2⼤⼩为1的⽹格中的9个点的坐标。
如果,将sparse参数设置为True,就不会向上⾯⼀样进⾏扩展了,也就是说它产⽣的⽹格坐标不是所有的⽹格坐标,⽽是⽹格对⾓线上的坐标点。
nx,ny = (3,3)
#从0开始到1结束,返回⼀个numpy数组,nx代表数组中元素的个数
x = np.linspace(0,2,nx)
# [0. 1. 2.]
y = np.linspace(0,2,ny)
# [0. 1. 2.]
xv,yv = np.meshgrid(x,y,sparse=True)
print(xv)
#[[ 0. 1. 2.]]
print(yv)
'''
[[ 0.]
[ 1.]
[ 2.]]
'''
以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论