您知道一些著名python库吗?这些库用于根据规则的网格日期点插入随机定位的二维点。
请注意,创建插值器的数据点位于规则网格上。但评估点不在规则网格上。
上下文
让我来解释一下上下文。在我的应用程序中,创建插值器的数据点位于规则网格上。然而,在求值时,要求值的点位于随机位置(比如np.random.rand(100, 2)
)。
据我所知,最常用的二维插值库是scipy的interp2d
。但在计算时,interp2d
使用的是网格坐标X
和Y
,而不是points
,如以下文档所述。
当然,也可以这样做
values = []
for p in np.random.rand(100, 2):
value = itp([p[0]], [p[1]])
values.append(value)
或避免for循环
pts = np.random.rand(100, 2)
tmp = itp(pts[:, 0], pts[:, 1])
value = tmp.diagonal()
但是这两种方法都是低效的。第一种方法会因为for循环而变慢(尽可能像在c端那样运行代码),第二种方法是浪费的,因为计算N^2个点而只得到N个点的结果。
1条答案
按热度按时间3bygqnnd1#
scipy.interpolate.RegularGridInterpolator
的情况下,可以使用网格化的数据点创建插值器,并且在求值时采用形状为(n_points,n_dim)的2dim numpy数组。例如: