该片段更新了Mad物理学家的建议。也许其他人会觉得这很有用:
import numpy as np
lats = [1,2,3]
lons=[4,5,6]
values=[7,8,9]
def vec2mtx(lats, lons, values):
''' Convert vectors of lat,lon locations and values to 2D grid'''
Z = np.zeros((len(set(lats)),len(set(lons))))
Z.fill(-9999) # no data value
lat_set = np.unique(lats); lons_set = np.unique(lons)
lats_grid = np.zeros((len(lats_set),len(lons_set)))
lons_grid = np.zeros((len(lats_set),len(lons_set)))
search_sorted_lats = np.searchsorted(np.sort(lats_set), lats)
search_sorted_lons = np.searchsorted(np.sort(lons_set), lons)
Z[(search_sorted_lats, search_sorted_lons)] = values
lats_grid[(search_sorted_lats, search_sorted_lons)] = lats
lons_grid[(search_sorted_lats, search_sorted_lons)] = lons
Z = np.flipud(Z)
return lats_grid, lons_grid, Z
lats_grid, lons_grid, Z = vec2mtx(lats, lons, values)