【发布时间】:2016-10-16 19:12:29
【问题描述】:
我有一个包含全球纬度和经度的大型数据集。但是,我只对查看特定区域感兴趣,因此我想过滤掉该区域之外的所有纬度/经度。问题是我使用 if 语句来解析数据,但是,这需要很长时间。有没有更快的方法来实现这一点?
数据来自 netCDF 文件,可以存储在字典中。我只想要北纬 10 度和北纬 80 度之间的纬度,以及 -170 度和 -50 度之间的经度。到目前为止,这是我尝试过的:
ret_dict = {}
with Dataset(filename,'r') as fid:
ret_dict['time'] = fid.variables['timeObs'][:]
sort_order = np.argsort(ret_dict['time'])
lat1 = [i for i in fid.variables['latitude'][:][sort_order] if fid.variables['latitude'][:][sort_order] > 10 ]
lat2 = [i for i in lat1 if lat1 < 80]
上面的代码可以重复经度。但是,这对于我的大量数据来说太慢了。它也没有给我索引,所以我确保我保留了原始的纬度和经度对。如何快速截断所有变量的数据?
编辑:下面的答案对于问题的第一部分是正确的,但是我也在尝试使用过滤纬度的索引截断其他变量。我正在尝试:
lon = [j for i,(j,i) in zip(fid.variables['longitude'][:],fid.variables['longitude']) if 10<i<80]
但是我收到错误:***TypeError: 'numpy.float32' object is not iterable
【问题讨论】:
-
之前已经回答过这个问题:stackoverflow.com/questions/29135885/…