如何使用给定步骤计算两个数字之间的线性插值?
How can i calculate linear interpolation between two numbers using given steps?
如何计算开始和停止之间的插值?
示例:插值(开始、停止、步骤)
interpolation(1, 5, 1) -> [1.0]
interpolation(1, 5, 2) -> [1.0, 5.0]
interpolation(1, 5, 3) -> [1.0, 3.0, 5.0]
interpolation(1, 5, 4) -> [1.0, 2.333333333333333, 3.6666666666666665, 5.0]
interpolation(1, 5, 5) -> [1.0, 2.0, 3.0, 4.0, 5.0]
interpolation(5, 1, 5) -> [5.0, 4.0, 3.0, 2.0, 1.0]
您可以使用 numpy.linspace
:
import numpy as np
np.linspace(5, 1, 5)
# array([5., 4., 3., 2., 1.])
np.linspace(1, 5, 4)
# array([1. , 2.33333333, 3.66666667, 5. ])
或纯 python:
def interpolation(start, stop, step):
if step == 1:
return [start]
return [start+(stop-start)/(step-1)*i for i in range(step)]
interpolation(5, 1, 5)
# [5.0, 4.0, 3.0, 2.0, 1.0]
interpolation(1, 5, 4)
# [1.0, 2.333333333333333, 3.6666666666666665, 5.0]
如何计算开始和停止之间的插值?
示例:插值(开始、停止、步骤)
interpolation(1, 5, 1) -> [1.0]
interpolation(1, 5, 2) -> [1.0, 5.0]
interpolation(1, 5, 3) -> [1.0, 3.0, 5.0]
interpolation(1, 5, 4) -> [1.0, 2.333333333333333, 3.6666666666666665, 5.0]
interpolation(1, 5, 5) -> [1.0, 2.0, 3.0, 4.0, 5.0]
interpolation(5, 1, 5) -> [5.0, 4.0, 3.0, 2.0, 1.0]
您可以使用 numpy.linspace
:
import numpy as np
np.linspace(5, 1, 5)
# array([5., 4., 3., 2., 1.])
np.linspace(1, 5, 4)
# array([1. , 2.33333333, 3.66666667, 5. ])
或纯 python:
def interpolation(start, stop, step):
if step == 1:
return [start]
return [start+(stop-start)/(step-1)*i for i in range(step)]
interpolation(5, 1, 5)
# [5.0, 4.0, 3.0, 2.0, 1.0]
interpolation(1, 5, 4)
# [1.0, 2.333333333333333, 3.6666666666666665, 5.0]