将NumPy数组细分为Regular Grid

时间:2014-10-26 09:01:38

标签: python numpy

将numpy导入为np

我有一个带有以下坐标的矩形:

ulx,uly = (110, 60) ##uppper left lon, upper left lat
urx,ury = (120, 60) ##uppper right lon, upper right lat
lrx, lry = (120, 50) ##lower right lon, lower right lat
llx, lly = (110, 50) ##lower left lon, lower left lat

我想将该单个矩形划分为100个常规网格,并且 想分别为每个网格计算(ulx,uly),(urx,ury),(lrx,lry)和(llx,lly):

lats = np.linspace(60, 50, 10)
lons = np.linspace(110, 120, 10)

lats = np.repeat(lats,10).reshape(10,10)
lons = np.tile(lons,10).reshape(10,10)

我无法想象该怎么做?

有人熟悉这类问题吗?

1 个答案:

答案 0 :(得分:2)

为此,您可以使用np.meshgrid

import numpy as np

lats = np.linspace(50, 60, 11)
lons = np.linspace(110, 120, 11)

xx, yy = np.meshgrid(lats, lons)

此时xxyy是2x2矩阵,其中包含网格图块的角坐标。 如果您只想要一个坐标列表,可以使用重塑:

ulx = np.reshape(xx[1:,:-1],(-1,1))
llx = np.reshape(xx[:-1,:-1],(-1,1))

urx = np.reshape(xx[1:,1:],(-1,1))
lrx = np.reshape(xx[:-1,1:],(-1,1))

uly = np.reshape(yy[1:,:-1],(-1,1))
lly = np.reshape(yy[:-1,:-1],(-1,1))

ury = np.reshape(yy[1:,1:],(-1,1))
lry = np.reshape(yy[:-1,1:],(-1,1))

但我建议您只使用xxyy