當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。