当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python cuspatial.CubicSpline用法及代码示例


用法:

class cuspatial.CubicSpline(t, y, ids=None, size=None, prefixes=None)

将输入 Series y 的每一列拟合为密封三次样条。

cuspatial.CubicSpline 支持两种使用模式:第一种与 scipy.interpolate.CubicSpline 相同:

curve = cuspatial.CubicSpline(t, y)
new_points = curve(np.linspace(t.min, t.max, 50))

这允许 API 与 scipy 奇偶校验。不建议这样做,因为基于 scipy 主机的插值性能可能会超过单条曲线的 GPU 性能。

然而,当许多样条同时拟合时,cuSpatial 大大优于 scipy。数据必须以 SoA 格式排列,单独曲线的独占 prefix_sum 也必须传递给函数。

NUM_SPLINES = 100000
SPLINE_LENGTH = 101
t = cudf.Series(
    np.hstack((np.arange(SPLINE_LENGTH),) * NUM_SPLINES)
).astype('float32')
y = cudf.Series(
    np.random.random(SPLINE_LENGTH*NUM_SPLINES)
).astype('float32')
prefix_sum = cudf.Series(
    cp.arange(NUM_SPLINES + 1)*SPLINE_LENGTH
).astype('int32')
curve = cuspatial.CubicSpline(t, y, prefixes=prefix_sum)
new_samples = cudf.Series(
    np.hstack((np.linspace(
        0, (SPLINE_LENGTH - 1), (SPLINE_LENGTH - 1) * 2 + 1
    ),) * NUM_SPLINES)
).astype('float32')
curve_ids = cudf.Series(np.repeat(
    np.arange(0, NUM_SPLINES), SPLINE_LENGTH * 2 - 1
), dtype="int32")
new_points = curve(new_samples, curve_ids)

相关用法


注:本文由纯净天空筛选整理自rapids.ai大神的英文原创作品 cuspatial.CubicSpline。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。