两个给定数字之间的等间距元素

时间:2018-06-11 11:53:22

标签: python

我正在使用视频文件。我有一个起始帧号。 x(比如说10)和停止帧没有。 y(比如说200)。我想拿起" n" x和y之间的帧(比如n = 8)。这些" n"在x和y之间,帧数应唯一等间距

请在Python 3.x中建议最快的方法。目前我正在使用这个:

list = random.sample(range(start_frame,stop_frame), int((stop_frame-start_frame)/n))

这给了我独特的帧但不是等间距。如何在起始帧和终止帧之间获得等间距帧。

2 个答案:

答案 0 :(得分:1)

如果您愿意使用第三方库,可以使用NumPy。您可以使用numpy.linspace将范围平均分为 n 组件:

import numpy as np

frames = np.linspace(10, 200, num=8)

print(frames)

[ 10.          37.14285714  64.28571429  91.42857143 118.57142857
 145.71428571 172.85714286 200.        ]

如果您需要整数,可以转换为int

print(frames.astype(int))

array([ 10,  37,  64,  91, 118, 145, 172, 200])

答案 1 :(得分:1)

如果您希望两个端点都具有包容性,那么您可以这样使 n = 8 帧从10到200:

x = 10
y = 200
n = 8
step = (y - x) / (n - 1)

frames = [x + step * i for i in range(n)]

print(frames)
[10.0, 37.14285714285714, 64.28571428571428, 91.42857142857143,
 118.57142857142857, 145.71428571428572, 172.85714285714286, 200.0]