Python中Meshgrid二维数组索引:经纬度索引表现差异探究
问题解答
一、索引表现不同的原因
numpy索引的误区:你用的
new_lons[:][0]和你想的“取所有行的第0列”完全不是一回事。new_lons[:]是获取整个二维数组,再跟[0]就是取这个数组的第0行,等价于new_lons[0]——而你的经度网格第0行全是同一个值,所以输出全是-81.53。meshgrid的网格结构特性:meshgrid生成的二维网格,是把一维经纬度数组分别“平铺”成二维:
- 你的纬度网格
new_lats里,所有不同纬度值刚好集中在第0行,所以new_lats[:][0](也就是第0行)能拿到所有纬度值; - 但经度网格
new_lons的结构相反:不同的经度值集中在第0列(从new_lons[0][0]和new_lons[1][0]的不同结果就能看出来),你取第0行自然拿不到所有经度值。
- 你的纬度网格
二、获取单一维度经度值的方法
直接取经度网格的第0列即可:
unique_lons = new_lons[:, 0]
如果怕搞混行和列,也可以用numpy的去重函数(不过效率不如直接取行/列):
import numpy as np unique_lons = np.unique(new_lons)
另外,如果你还记得当初生成网格用的原始一维经度数组(比如original_lons),那直接用它就行,没必要从二维网格里提取。
内容的提问来源于stack exchange,提问作者Miss_Orchid
相关产品推荐
相关产品推荐

