我有陣列與A和B相關聯,它們存儲每個網格點的(x,y)位置。
在這種情況下,答案應該是相當簡單的...
是兩個網格嚴格在同一網格化方案?假如是這樣,你可以這樣做:
np.argwhere((Ax == Bx.min()) & (Ay == By.min()))
假設兩個網格的世界座標增加在相同的方向網格的indicies,這給子集化的網格的左下角。 (如果他們沒有在同一方向(即負dx
或dy
)增加,它只是給對方一個角)
在下面的例子中,我們可以明顯纔算從ix = (Bxmin - Axmin)/dx
等適當indicies ,但假設你有一個更復雜的網格系統,這仍然有效。但是,這是假定兩個網格處於相同的網格方案!它稍微複雜,如果他們不...
import numpy as np
# Generate grids of coordinates from a min, max, and spacing
dx, dy = 0.5, 0.5
# For the larger grid...
Axmin, Axmax = -180, 180
Aymin, Aymax = -90, 90
# For the smaller grid...
Bxmin, Bxmax = -5, 10
Bymin, Bymax = 30, 40
# Generate the indicies on a 2D grid
Ax = np.arange(Axmin, Axmax+dx, dx)
Ay = np.arange(Aymin, Aymax+dy, dy)
Ax, Ay = np.meshgrid(Ax, Ay)
Bx = np.arange(Bxmin, Bxmax+dx, dx)
By = np.arange(Bymin, Bymax+dy, dy)
Bx, By = np.meshgrid(Bx, By)
# Find the corner of where the two grids overlap...
ix, iy = np.argwhere((Ax == Bxmin) & (Ay == Bymin))[0]
# Assert that the coordinates are identical.
assert np.all(Ax[ix:ix+Bx.shape[0], iy:iy+Bx.shape[1]] == Bx)
assert np.all(Ay[ix:ix+Bx.shape[0], iy:iy+Bx.shape[1]] == By)
這個問題的答案真的取決於你有的網格類型。它是一個等距的笛卡爾網格嗎? – 2010-11-11 09:07:02
對於A和B的網格點的位置,座標是否在水平和垂直方向上升?如果是這樣,那麼只需做一些二進制搜索。 – 2010-11-13 03:57:42
如果這是全球氣候圖,B是否與非洲等地理區域相對應(即形狀不完全是矩形)還是隻是一個矩形子區域? – 2010-11-22 19:40:45