логарифмически расставленные целые числа

Скажем, у меня есть вектор из 10000 пт, который я хочу взять срез только из 100 логарифмически разнесенных точек. Я хочу, чтобы функция давала мне целочисленные значения для индексов. Вот'Это простое решение, которое просто использует + logspace, а затем избавляется от дубликатов.

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)

Обратите внимание, что было 16 дубликатов, так что теперь у меня всего 84 очка.

У кого-нибудь есть решение, которое будет эффективно обеспечивать количество выходных выборок? Для этого конкретного примера входные значения для чисел 121 и 122 дают 100 выходных точек.

Ответы на вопрос(3)

Ваш ответ на вопрос