我正在尝试创建一个 lat/lon 网格,其中包含一组找到的索引,其中满足 lat/lon 组合的两个条件。这种方法可能过于复杂,但使用网格网格或 numpy 广播也失败了。如果有更好的方法,请随时分享您的知识。:-)
将纬度/经度值舍入为 1° 的网格大小分辨率,但保留数组的全长:
x = np.around(lon, decimals=0)
y = np.around(lat, decimals=0)
数组由 -180 到 180 和 -82° 到 82° 的经度/纬度值组成;可能有多个双胞胎
检查纬度/经度的每种组合有多少测量可用于 1°/1° 网格点:
a = arange(-180,181)
b = arange(-82,83)
totalgrid = [ [ 0 for i in range(len(b)) ] for j in range(len(a)) ]
for d1 in range(len(a)):
for d2 in range(len(b)):
totalgrid[d1][d2]=np.where((x==a[d1])&(y==b[d2]))[0]
此方法失败并仅返回具有空数组的列表列表。我不知道为什么它不能正常工作。将最后一行替换为:
totalgrid[d1][d2]=np.where((x==a[0])&(y==b[0]))[0]
从 -180°/-82° 的 lon/lat 返回所有找到的索引。不幸的是,这需要一段时间。我在某处错过了 for 循环吗?!
更详细的问题: @askewchan 不幸的是,这个问题并没有解决我原来的问题。正如预期的那样,结果很好地代表了groundtrack。 但除了我需要每个网格点的总点数之外,我还需要 lat/lon 数组中的 lat/lon 组合的每个索引以进行进一步计算。假设我有一个数组
lat(100000L,), lon(100000L,) and a third one array(100000L,)
这对应于每个点的测量值。我需要纬度/经度中所有 1°/1° 组合的每个索引,以检查数组(100000L,)中的该索引是否满足条件。现在让我们假设 lat/lon 的索引 [10000,10001,10002,..,10025] 在同一个网格点上。对于这些索引,我需要检查 array[10000,10001,10002,..,10025] 现在是否满足条件,即 np.where(array==0)。使用 cts.nonzero() 我只能得到直方图中的索引。但是随后对直方图的值有贡献的每个点的所有信息都会丢失。希望你能得到我最初的问题。