我有两个numpy数组,定义网格的x和y轴.例如:
x = numpy.array([1,2,3])
y = numpy.array([4,5])
Run Code Online (Sandbox Code Playgroud)
我想生成这些数组的笛卡尔积来生成:
array([[1,4],[2,4],[3,4],[1,5],[2,5],[3,5]])
Run Code Online (Sandbox Code Playgroud)
在某种程度上,由于我需要在循环中多次执行此操作,因此效率不高.我假设将它们转换为Python列表并使用itertools.product并返回到numpy数组并不是最有效的形式.
我在 python 中使用 shapely 并尝试在网格中生成均匀间隔的点,这些点在最快的 O(n) 时间内落在形状内。形状可以是任何闭合多边形,而不仅仅是正方形或圆形。我目前的做法是:
有没有更快的方法来做到这一点?
# determine maximum edges
polygon = shape(geojson['features'][i]['geometry'])
latmin, lonmin, latmax, lonmax = polygon.bounds
# construct a rectangular mesh
points = []
for lat in np.arange(latmin, latmax, resolution):
for lon in np.arange(lonmin, lonmax, resolution):
points.append(Point((round(lat,4), round(lon,4))))
# validate if each point falls inside shape
valid_points.extend([i for i in points if polygon.contains(i)])
Run Code Online (Sandbox Code Playgroud)
我正在尝试将数据绘制到地图上。我想为特定城市的地图上的特定点生成数据(例如到一个或多个预先指定位置的运输时间)。
我在这里找到了纽约市的数据:https : //data.cityofnewyork.us/City-Government/Borough-Boundaries/tqmj-j8zm
看起来他们有一个可用的 shapefile。我想知道是否有一种方法可以在每个行政区的 shapefile 范围内对经纬度网格进行采样(可能使用 Shapely 包等)。
对不起,如果这是天真,我不是很熟悉处理这些文件——我这样做是作为一个有趣的项目来了解它们