我有一个数字列表,我想把它们分成N个均匀间隔的数字,而第一个和最后一个数字必须在结果列表中,所有数字都应该是一个整数,所以我很好最后两个之间的空间稍微偏离。
例如,我的范围是1-100,我希望结果列表有三个数字,所以它是[1, 50, 100]
。是否有一种python方式来分割它们?或者什么可以成为增量的等式?通过(last-first)/ N获得增量将不起作用,因为它会产生更多数字。
我无法想出一个工作方程式来获得增量,我所拥有的最好的是(last-first-2)/N-2
,但是在某些组合上没有给出均匀的分割。
答案 0 :(得分:2)
您可以使用numpy.linspace()
:
import numpy as np
np.linspace(1, 100, 3, dtype=int)
输出:
array([ 1, 50, 100])
或者,如果您已经有一个整数列表,并且您想使用此方法从中进行采样:
nums = range(1,200,2) # odd numbers
[nums[i-1] for i in np.linspace(1, 100, 3, dtype=int)]
输出:
[1, 99, 199]