gpt4 book ai didi

python - 有与 MATLAB 的 vct2mtx 等效的 Python 吗?

转载 作者:行者123 更新时间:2023-12-01 09:31:33 25 4
gpt4 key购买 nike

我有一个点列表(纬度和经度)以及这些点的相应值列表。现在我想用它制作一个二维网格。虽然循环排序的经度和纬度来创建 2D 网格是很简单的,但我想知道是否有一个高效的 Python 函数(也许在 numpy 中?)

import numpy as np
lats = [1,2,3]
lons=[4,5,6]
values=[7,8,9]

def vec2mtx(lats, lons, values):
Z = np.zeros((len(set(lats)),len(set(lons))))
Z.fill(-9999) # no data value
lats_grid = np.zeros((len(set(lats)),len(set(lons))))
lons_grid = np.zeros((len(set(lats)),len(set(lons))))
search_sorted_lats = np.searchsorted(np.sort(list(set(lats))), lats)
search_sorted_lons = np.searchsorted(np.sort(list(set(lons))), 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)

What Z looks like

这段代码做了我需要做的事情,但是对于 numpy 中应该像单行的东西来说,这似乎太多行了?

最佳答案

根据疯狂物理学家的建议更新了该片段。也许其他人发现这很有用:

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)

关于python - 有与 MATLAB 的 vct2mtx 等效的 Python 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49926397/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com