j13r j13r - 2 months ago 11x
Python Question

Choose m evenly spaced elements from a sequence of length n

I have a vector/array of n elements. I want to choose m elements.

The choices must be fair / deterministic -- equally many from each subsection.

With m=10, n=20 it is easy: just take every second element.
But how to do it in the general case? Do I have to calculate the LCD?

agf agf

Here is a quick example:

from math import ceil

def takespread(sequence, num):
    length = float(len(sequence))
    for i in range(num):
        yield sequence[int(ceil(i * length / num))]

math.ceil is used because without it, the chosen indexes will be weighted too much toward the beginning of each implicit subsection, and as a result the list as a whole.