Numpy库中常用函数的简介、应用
1、X, Y = np.meshgrid(X, Y)
meshgrid Found at: numpy.lib.function_base
Return coordinate matrices from coordinate vectors.
Make N-D coordinate arrays for vectorized evaluations of N-D scalar/vector fields over N-D grids, given one-dimensional coordinate arrays x1, x2,..., xn.
.. versionchanged:: 1.9
1-D and 0-D cases are allowed.
Parameters
----------
x1, x2,..., xn : array_like
1-D arrays representing the coordinates of a grid.
indexing : {'xy', 'ij'}, optional
Cartesian ('xy', default) or matrix ('ij') indexing of output.
See Notes for more details.
.. versionadded:: 1.7.0
sparse : bool, optional
If True a sparse grid is returned in order to conserve memory. Default is False.
.. versionadded:: 1.7.0
copy : bool, optional. If False, a view into the original arrays are returned in
order to conserve memory. Default is True. Please note that ``sparse=False, copy=False`` will likely return noncontiguous arrays. Furthermore, more than one element of a broadcast array may refer to a single memory location. If you need to write to the arrays, make copies first.
.. versionadded:: 1.7.0
Returns
-------
X1, X2,..., XN : ndarray
For vectors `x1`, `x2`,..., 'xn' with lengths ``Ni=len(xi)`` ,
return ``(N1, N2, N3,...Nn)`` shaped arrays if indexing='ij' or ``(N2, N1, N3,...Nn)`` shaped arrays if indexing='xy' with the elements of `xi` repeated to fill the matrix along the first dimension for `x1`, the second for `x2` and so on.
Notes
-----
This function supports both indexing conventions through the indexing keyword argument. Giving the string 'ij' returns a meshgrid with matrix indexing, while 'xy' returns a meshgrid with Cartesian indexing.
In the 2-D case with inputs of length M and N, the outputs are of shape (N, M) for 'xy' indexing and (M, N) for 'ij' indexing. In the 3-D case with inputs of length M, N and P, outputs are of shape (N, M, P) for 'xy' indexing and (M, N, P) for 'ij' indexing. The difference is illustrated by the following code snippet::
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]
In the 1-D and 0-D case, the indexing and sparse keywords have no effect.
See Also
--------
index_tricks.mgrid : Construct a multi-dimensional "meshgrid" using indexing notation.
index_tricks.ogrid : Construct an open multi-dimensional "meshgrid" using indexing notation.
从坐标向量返回坐标矩阵。
建立N-D坐标阵列,在N-D网格上对N-D标量/向量场进行向量化计算,给定一维坐标阵列x1, x2,…,xn。
. .versionchanged:: 1.9
允许1-D和0-D。
参数
----------
x1, x2,…, xn: array_like
表示网格坐标的一维数组。
索引:{'xy', 'ij'},可选
Cartesian ('xy',默认)或矩阵('ij')索引的输出。
参见注释了解更多细节。
. .versionadded: 1.7.0
稀疏:bool,可选
如果为真,则返回一个稀疏网格以保存内存。默认是假的。
. .versionadded: 1.7.0
复制:bool,可选。如果为假,则返回原始数组的视图
为了保存记忆。默认是正确的。请注意,' ' sparse=False, copy=False ' '将可能返回不相邻的数组。此外,广播数组中的多个元素可以引用单个内存位置。如果需要对数组进行写入,请首先进行复制。
. .versionadded: 1.7.0
返回
-------
X1, X2,…XN: ndarray
对于向量“x1”,“x2”,…, 'xn'加上length ' ' ' Ni=len(xi) ' ',
返回' ' (N1, N2, N3,…Nn) ' '形数组如果索引='ij'或' ' (N2, N1, N3,…Nn) ' '形数组如果索引='xy'与元素' xi '重复填充矩阵沿第一个维度为' x1 ',第二个为' x2 ',以此类推。
笔记
-----
这个函数通过索引关键字参数支持两种索引约定。给出字符串'ij'返回一个带矩阵索引的meshgrid,而'xy'返回一个带笛卡尔索引的meshgrid。
在输入长度为M和N的二维情况下,输出的形状为(N, M),表示“xy”索引,(M, N)表示“ij”索引。在输入长度为M、N和P的3-D情况下,输出的形状(N、M、P)表示“xy”索引,(M、N、P)表示“ij”索引。区别如下面的代码片段所示::
xv yv = np。meshgrid(x, y, sparse=False, index ='ij')
i在range(nx)内:
j in range(ny):
治疗xv[i,j], yv[i,j]
xv yv = np。meshgrid(x, y, sparse=False, index ='xy')
i在range(nx)内:
j in range(ny):
在1-D和0-D情况下,索引和稀疏关键字没有影响。。
另请参阅
--------
index_tricks。mgrid:使用索引符号构造一个多维“meshgrid”。
index_tricks。ogrid:使用索引符号构造一个开放的多维“meshgrid”。
Examples
--------
>>> 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` is very useful to evaluate functions on a grid.
>>> 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)
————————————————
版权声明:本文为CSDN博主「一个处女座的程序猿」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_41185868/article/details/106112967