當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。