enteros espaciados logarítmicamente

Digamos que tengo un vector de 10,000 pts y quiero tomar una porción de solo 100 puntos espaciados logarítmicamente. Quiero que una función me dé valores enteros para los índices. Aquí hay una solución simple que simplemente usa alrededor de + logspace, y luego deshacerse de los duplicados.

def genLogSpace( array_size, num ):
    lspace = around(logspace(0,log10(array_size),num)).astype(uint64)
    return array(sorted(set(lspace.tolist())))-1

ls=genLogspace(1e4,100)

print ls.size
>>84
print ls
array([   0,    1,    2,    3,    4,    5,    6,    7,    8,    9,   10,
         11,   13,   14,   15,   17,   19,   21,   23,   25,   27,   30,
         33,   37,   40,   44,   49,   54,   59,   65,   71,   78,   86,
         94,  104,  114,  125,  137,  151,  166,  182,  200,  220,  241,
        265,  291,  319,  350,  384,  422,  463,  508,  558,  613,  672,
        738,  810,  889,  976, 1071, 1176, 1291, 1416, 1555, 1706, 1873,
       2056, 2256, 2476, 2718, 2983, 3274, 3593, 3943, 4328, 4750, 5213,
       5721, 6279, 6892, 7564, 8301, 9111, 9999], dtype=uint64)

Note que había 16 duplicados, así que ahora solo tengo 84 puntos.

¿Alguien tiene una solución que asegure eficientemente que el número de muestras de salida sea num? Para este ejemplo específico, los valores de entrada para los números 121 y 122 dan 100 puntos de salida.

Respuestas a la pregunta(3)

Su respuesta a la pregunta