python meshgrid_Python numpy.meshgrid函数方法的使用

numpy.meshgrid

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

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

给定一维坐标数组x1,x2,…,xn,制作N-D坐标数组以对N-D网格上的N-D标量/矢量场进行矢量化评估。

Changed in version 1.9: 1-D and 0-D cases are allowed.参数 :x1, x2,…, xn :array_like

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

indexing :{‘xy’, ‘ij’}, 可选

笛卡尔(默认为'xy')或矩阵('ij')的输出索引。

有关更多详细信息,请参见注释。

1.7.0版中的新功能。

sparse :bool, 可选

如果为True,则返回一个稀疏网格以节省内存。

默认值为False。

1.7.0版中的新功能。

copy :bool, 可选

如果为False,则返回原始数组的视图以节省内存。

默认值为True。请注意,

sparse = False,copy = False可能会返回非连续数组。

此外,广播阵列的一个以上的元素可以引用单个存储位置。

如果需要写入阵列,请先进行复制。

1.7.0版中的新功能。

返回值 :X1, X2,…, XN :ndarray

对于长度为Ni = len(xi)的向量x1,x2,…,'xn',

如果返回(N1,N2,N3,... Nn)形状的数组

indexing ='ij'或(N2,N1,N3,... Nn)形状的数组,

如果indexing ='xy'

且重复xi的元素以沿x1的第一个维度填充矩阵,

第二个用于x2,依此类推。

Notes

此函数通过indexing关键字参数支持两种索引约定。 赋予字符串'ij'将返回具有矩阵索引的网格,而'xy'将返回具有笛卡尔索引的网格。 在输入长度为M和N的二维情况下,对于'xy'索引,输出的形状为(N,M),对于'ij'索引,输出的形状为(M,N)。 在输入长度为M,N和P的3-D情况下,对于“ xy”索引,输出的形状为(N,M,P),对于'ij'索引输出的形状为(M,N,P)。 以下代码片段说明了这种差异: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]

\nxv, 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]

在1-D和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()

你可能感兴趣的:(python,meshgrid)