numpy.meshgrid

numpy.meshgrid(*xi, copy=True, sparse=False, indexing='xy')[源代码]

从坐标向量返回坐标矩阵。

在给定一维坐标阵列x1,x2,…,xn的情况下,为N-D网格上N-D标量/矢量场的矢量化计算制作N-D坐标阵列。

在 1.9 版更改: 允许1-D和0-D案例。

参数
x1,x2,…,xnarray_like

表示网格坐标的一维数组。

indexing'xy'、'ij',可选

输出的笛卡尔(“xy”,默认)或矩阵(“ij”)索引。有关详细信息,请参阅注释。

1.7.0 新版功能.

sparse可选的布尔

如果为真,则返回稀疏网格以节省内存。默认值为假。

1.7.0 新版功能.

copy可选的布尔

如果为false,则返回原始数组中的视图以节省内存。默认值为true。请注意 sparse=False, copy=False 可能返回非连续数组。此外,广播阵列的多个元素可以指代单个存储器位置。如果需要写入数组,请先复制。

1.7.0 新版功能.

返回
x1,x2,…,xn恩达雷

对于向量 x1x2 ,…,'xn'带长度 Ni=len(xi) 返回 (N1, N2, N3,...Nn) 如果索引为“ij”或 (N2, N1, N3,...Nn) 如果索引为“xy”且元素为 xi 重复以沿第一个维度填充矩阵 x1 ,第二个 x2 等等。

参见

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()
../../_images/numpy-meshgrid-1.png