如何使用给定步骤计算两个数字之间的线性插值?

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]