菜单
×
   ❮   
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

SciPy 插值


什么是插值?

插值是一种在给定点之间生成点的方法。

例如:对于点 1 和 2,我们可以进行插值找到点 1.33 和 1.66。

插值有很多用途,在机器学习中我们经常处理数据集中的缺失数据,插值常用于替换这些值。

这种填充值的方法称为插补

除了插补,插值还常用于需要平滑数据集中离散点的情况。


如何在 SciPy 中实现?

SciPy 提供了一个名为 scipy.interpolate 的模块,其中包含许多用于处理插值的功能。


一维插值

函数 interp1d() 用于对具有 1 个变量的分布进行插值。

它接受 xy 点,并返回一个可调用函数,该函数可以用新的 x 调用,并返回相应的 y

示例

对于给定的 xs 和 ys,对 2.1、2.2... 到 2.9 进行插值

from scipy.interpolate import interp1d
import numpy as np

xs = np.arange(10)
ys = 2*xs + 1

interp_func = interp1d(xs, ys)

newarr = interp_func(np.arange(2.1, 3, 0.1))

print(newarr)

结果

  [5.2  5.4  5.6  5.8  6.   6.2  6.4  6.6  6.8]

自己动手试一试 »

注意: 新的 xs 应该与旧的 xs 在同一范围内,这意味着我们不能用大于 10 或小于 0 的值调用 interp_func()



样条插值

在一维插值中,点是为单个曲线拟合的,而在样条插值中,点是为由称为样条的多项式定义的分段函数拟合的。

函数 UnivariateSpline() 接受 xsys,并生成一个可调用函数,该函数可以用新的 xs 调用。

分段函数: 为不同范围定义不同的函数。

示例

为以下非线性点查找 2.1、2.2... 2.9 的单变量样条插值

from scipy.interpolate import UnivariateSpline
import numpy as np

xs = np.arange(10)
ys = xs**2 + np.sin(xs) + 1

interp_func = UnivariateSpline(xs, ys)

newarr = interp_func(np.arange(2.1, 3, 0.1))

print(newarr)

结果

  [5.62826474 6.03987348 6.47131994 6.92265019 7.3939103  7.88514634
   8.39640439 8.92773053 9.47917082]

自己动手试一试 »

径向基函数插值

径向基函数是对应于固定参考点的函数。

函数 Rbf() 也接受 xsys 作为参数,并生成一个可调用函数,该函数可以用新的 xs 调用。

示例

使用 rbf 插值以下 xs 和 ys,并查找 2.1、2.2 ... 2.9 的值

from scipy.interpolate import Rbf
import numpy as np

xs = np.arange(10)
ys = xs**2 + np.sin(xs) + 1

interp_func = Rbf(xs, ys)

newarr = interp_func(np.arange(2.1, 3, 0.1))

print(newarr)

结果

  [6.25748981  6.62190817  7.00310702  7.40121814  7.8161443   8.24773402
   8.69590519  9.16070828  9.64233874]

自己动手试一试 »


×

联系销售

如果您想将 W3Schools 服务用于教育机构、团队或企业,请发送电子邮件给我们
sales@w3schools.com

报告错误

如果您想报告错误,或想提出建议,请发送电子邮件给我们
help@w3schools.com

W3Schools 经过优化,旨在方便学习和培训。示例可能经过简化,以提高阅读和学习体验。教程、参考资料和示例会不断审查,以避免错误,但我们无法保证所有内容的完全正确性。使用 W3Schools 即表示您已阅读并接受我们的使用条款Cookie 和隐私政策

版权所有 1999-2024 Refsnes Data。保留所有权利。W3Schools 由 W3.CSS 提供支持