gpt4 book ai didi

python - matplotlib.mlab.griddata 非常慢并且在输入有效数据时返回 nan 数组

转载 作者:太空狗 更新时间:2023-10-30 01:03:34 25 4
gpt4 key购买 nike

我正在尝试将具有相关纬度和经度的不规则网格化数据集(原始卫星数据)映射到 basemap.makegrid() 给出的规则网格化纬度和经度集。 .我正在使用 matplotlib.mlab.griddatampl_toolkits.natgrid安装。以下是 whos 用作输出的变量列表在 ipython 中和变量的一些统计数据:

Variable   Type       Data/Info
-------------------------------
datalat ndarray 666x1081: 719946 elems, type `float32`, 2879784 bytes (2 Mb)
datalon ndarray 666x1081: 719946 elems, type `float32`, 2879784 bytes (2 Mb)
gridlat ndarray 1200x1000: 1200000 elems, type `float64`, 9600000 bytes (9 Mb)
gridlon ndarray 1200x1000: 1200000 elems, type `float64`, 9600000 bytes (9 Mb)
var ndarray 666x1081: 719946 elems, type `float32`, 2879784 bytes (2 Mb)

In [11]: var.min()
Out[11]: -30.0

In [12]: var.max()
Out[12]: 30.0

In [13]: datalat.min()
Out[13]: 27.339874

In [14]: datalat.max()
Out[14]: 47.05302

In [15]: datalon.min()
Out[15]: -137.55658

In [16]: datalon.max()
Out[16]: -108.41629

In [17]: gridlat.min()
Out[17]: 30.394031556984299

In [18]: gridlat.max()
Out[18]: 44.237140350357713

In [19]: gridlon.min()
Out[19]: -136.17646180595321

In [20]: gridlon.max()
Out[20]: -113.82353819404671

datalatdatalon是原始数据坐标

gridlatgridlon是要插值的坐标

var包含实际数据

使用这些变量,当我调用 griddata(datalon, datalat, var, gridlon, gridlat) 时它花了长达 20 分钟的时间才完成,并返回了一个 nan 的数组。 .从数据来看,纬度和经度似乎是正确的,原始坐标与新区域的一部分重叠,一些数据点位于新区域之外。有没有人有什么建议? nan 值表明我在做一些愚蠢的事情......

最佳答案

看起来 mlab.griddata 例程可能会对您的输出数据引入不必要的额外约束。虽然输入位置可以是任何东西,但输出位置 must be a regular grid - 因为你的例子是在纬度/经度空间中,你选择的 map 投影可能会违反这一点(即 x/y 中的规则网格不是纬度/经度中的规则网格)。

您可以尝试 SciPy 中的 interpolate.griddata 例程作为替代方案 - 你需要将你的位置变量组合成一个数组,但是,因为调用签名不同:类似于

import scipy.interpolate
data_locations = np.vstack(datalon.ravel(), datalat.ravel()).T
grid_locations = np.vstack(gridlon.ravel(), gridlat.ravel()).T
grid_data = scipy.interpolate.griddata(data_locations, val.ravel(),
grid_locations, method='nearest')

用于最近邻插值。这会将位置放入一个数组中,其中 2 列对应于您的 2 个维度。您可能还想在 map 投影的变换空间中执行插值。

关于python - matplotlib.mlab.griddata 非常慢并且在输入有效数据时返回 nan 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7424777/

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