假设我有一个 10,000 pt 的向量,我想取一个只有 100 个对数间隔点的切片。我想要一个函数来给我索引的整数值。这是一个简单的解决方案,只需使用 around + 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 分。
有没有人有一个解决方案可以有效地确保输出样本的数量是 num?对于此特定示例,num 的输入值 121 和 122 给出 100 个输出点。