numpy.
meshgrid
从坐标向量返回坐标矩阵。
在给定一维坐标阵列x1,x2,…,xn的情况下,为N-D网格上N-D标量/矢量场的矢量化计算制作N-D坐标阵列。
在 1.9 版更改: 允许1-D和0-D案例。
表示网格坐标的一维数组。
输出的笛卡尔(“xy”,默认)或矩阵(“ij”)索引。有关详细信息,请参阅注释。
1.7.0 新版功能.
如果为真,则返回稀疏网格以节省内存。默认值为假。
如果为false,则返回原始数组中的视图以节省内存。默认值为true。请注意 sparse=False, copy=False 可能返回非连续数组。此外,广播阵列的多个元素可以指代单个存储器位置。如果需要写入数组,请先复制。
sparse=False, copy=False
对于向量 x1 , x2 ,…,'xn'带长度 Ni=len(xi) 返回 (N1, N2, N3,...Nn) 如果索引为“ij”或 (N2, N1, N3,...Nn) 如果索引为“xy”且元素为 xi 重复以沿第一个维度填充矩阵 x1 ,第二个 x2 等等。
Ni=len(xi)
(N1, N2, N3,...Nn)
(N2, N1, N3,...Nn)
参见
mgrid
使用索引表示法构造多维“网格网格”。
ogrid
使用索引符号构造一个开放的多维“网格”。
笔记
此函数通过indexing关键字参数支持两种索引约定。给定字符串“ij”将返回带矩阵索引的网格网格,而“xy”将返回带笛卡尔索引的网格。在输入长度为m和n的二维情况下,输出的形状(n,m)用于“xy”索引,而(m,n)用于“ij”索引。在输入长度为m、n和p的三维情况下,输出的形状(n、m、p)用于“xy”索引,而(m、n、p)用于“ij”索引。不同之处由以下代码段说明:
xv, yv = np.meshgrid(x, y, sparse=False, indexing='ij') for i in range(nx): for j in range(ny): # treat xv[i,j], yv[i,j] xv, yv = np.meshgrid(x, y, sparse=False, indexing='xy') for i in range(nx): for j in range(ny): # treat xv[j,i], yv[j,i]
在一维和0-D情况下,索引和稀疏关键字没有效果。
实例
>>> nx, ny = (3, 2) >>> x = np.linspace(0, 1, nx) >>> y = np.linspace(0, 1, ny) >>> xv, yv = np.meshgrid(x, y) >>> xv array([[0. , 0.5, 1. ], [0. , 0.5, 1. ]]) >>> yv array([[0., 0., 0.], [1., 1., 1.]]) >>> xv, yv = np.meshgrid(x, y, sparse=True) # make sparse output arrays >>> xv array([[0. , 0.5, 1. ]]) >>> yv array([[0.], [1.]])
meshgrid 对于在网格上计算函数非常有用。
>>> import matplotlib.pyplot as plt >>> x = np.arange(-5, 5, 0.1) >>> y = np.arange(-5, 5, 0.1) >>> xx, yy = np.meshgrid(x, y, sparse=True) >>> z = np.sin(xx**2 + yy**2) / (xx**2 + yy**2) >>> h = plt.contourf(x,y,z) >>> plt.show()