将数字列表拆分为N个子部分

时间:2017-12-14 16:57:38

标签: python list split

我有一个数字列表,我想把它们分成N个均匀间隔的数字,而第一个和最后一个数字必须在结果列表中,所有数字都应该是一个整数,所以我很好最后两个之间的空间稍微偏离。

例如,我的范围是1-100,我希望结果列表有三个数字,所以它是[1, 50, 100]。是否有一种python方式来分割它们?或者什么可以成为增量的等式?通过(last-first)/ N获得增量将不起作用,因为它会产生更多数字。

我无法想出一个工作方程式来获得增量,我所拥有的最好的是(last-first-2)/N-2,但是在某些组合上没有给出均匀的分割。

1 个答案:

答案 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]