当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python dask.array.meshgrid用法及代码示例


用法:

dask.array.meshgrid(*xi, sparse=False, indexing='xy', **kwargs)

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

此文档字符串是从 numpy.meshgrid 复制的。

可能存在与 Dask 版本的一些不一致之处。

在给定一维坐标数组 x1、x2、...、xn 的情况下,制作 N-D 坐标数组,用于在 N-D 网格上对 N-D 标量/矢量场进行矢量化评估。

参数

x1, x2,…, xnarray_like

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

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

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

sparse布尔型,可选

如果为 True,则返回维度坐标数组的形状i从减少(N1, ..., Ni, ... Nn)(1, ..., 1, Ni, 1, ..., 1).这些稀疏坐标网格旨在与广播.在表达式中使用所有坐标时,广播仍会导致 fully-dimensonal 结果数组。

默认为假。

copybool,可选(在 Dask 中不支持)

如果为 False,则返回原始数组的视图以节省内存。默认为真。请注意,sparse=False, copy=False 可能会返回不连续的数组。此外,广播数组的不止一个元素可以指代单个存储器位置。如果您需要写入数组,请先制作副本。

返回

X1, X2,…, XNndarray

对于长度为 Ni=len(xi) 的向量 x1 , x2 ,...,‘xn’,如果 indexing='ij' 则返回 (N1, N2, N3,...Nn) 形状数组,如果 indexing='xy' 则返回 (N2, N1, N3,...Nn) 形状数组,其中 xi 的元素重复到沿第一个维度填充矩阵 x1 ,第二个维度用于 x2 ,依此类推。

注意

此函数通过 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, 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, 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 对于评估网格上的函数非常有用。如果函数依赖于所有坐标,您可以使用参数sparse=True 来节省内存和计算时间。

>>> x = np.linspace(-5, 5, 101)  
>>> y = np.linspace(-5, 5, 101)  
>>> # full coorindate arrays
>>> xx, yy = np.meshgrid(x, y)  
>>> zz = np.sqrt(xx**2 + yy**2)  
>>> xx.shape, yy.shape, zz.shape  
((101, 101), (101, 101), (101, 101))
>>> # sparse coordinate arrays
>>> xs, ys = np.meshgrid(x, y, sparse=True)  
>>> zs = np.sqrt(xs**2 + ys**2)  
>>> xs.shape, ys.shape, zs.shape  
((1, 101), (101, 1), (101, 101))
>>> np.array_equal(zz, zs)  
True
>>> import matplotlib.pyplot as plt  
>>> h = plt.contourf(x, y, zs)  
>>> plt.axis('scaled')  
>>> plt.colorbar()  
>>> plt.show()

相关用法


注:本文由纯净天空筛选整理自dask.org大神的英文原创作品 dask.array.meshgrid。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。