Python 增量为对数刻度步长的一半

Python 增量为对数刻度步长的一半,python,Python,我似乎无法理解这一点 我有一个价值观,为了简单起见,让它成为: a = 1e-4 我想生成比a小和大的数字,以对数刻度的半步进行,这意味着: b1 = 5e-4 c1 = 5e-5 这是通过乘以5或除以2来实现的,但下一步需要相反的结果——要进一步放大,应乘以2,要减小,则应除以5,如下所示: b2 = 1e-3 c2 = 1e-5 是否有一种方法可以制定此任务,使得对于a的任何值,我都能够得到b和c的值 我不确定我所说的半日志步骤实际上是什么意思,但也许有一种方法可以解释这一点。iter

我似乎无法理解这一点

我有一个价值观,为了简单起见,让它成为:

a = 1e-4
我想生成比a小和大的数字,以对数刻度的半步进行,这意味着:

b1 = 5e-4
c1 = 5e-5
这是通过乘以5或除以2来实现的,但下一步需要相反的结果——要进一步放大,应乘以2,要减小,则应除以5,如下所示:

b2 = 1e-3
c2 = 1e-5
是否有一种方法可以制定此任务,使得对于a的任何值,我都能够得到bc的值


我不确定我所说的半日志步骤实际上是什么意思,但也许有一种方法可以解释这一点。

itertools。使用自定义函数累积来生成序列

输入顺序为交替顺序(5,2,5,2,…)

导入itertools
def main():
a=1e-4
计数=3
打印(列表(itertools.accumulate([5,2]*count,lambda s,t:s*t,initial=a)))
打印(列表(itertools.accumulate([1/2,1/5]*count,lambda s,t:s*t,initial=a)))
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
main()
输出:

[0.0001, 0.0005, 0.001, 0.005, 0.01, 0.05, 0.1]
[0.0001, 5e-05, 1e-05, 5e-06, 1.0000000000000002e-06, 5.000000000000001e-07, 1.0000000000000002e-07]

连续b(或c)之间的距离不相等,即使在记录日志后也不相等。因此,您自己定义的序列需要一种“特殊”的创建方式是很正常的。对我来说,这似乎是最简单的解决方案:

b = [a*5]
c = [a/2]
for i in range(0, n, 2):  # n = number of elements you want in b and c.
     b.append(b[i]*2)
     b.append(b[i+1]*5)
     c.append(c[i]/5)
     c.append(c[i+1]/2)

这个问题实际上与机器学习无关-请不要发送不相关的标签(已删除)。请记住,标记只与问题的内容有关,而与问题的上下文无关。如果标记不通知成员他们的知识与查询相关,那么标记的作用是什么?我相信这是机器学习专家以前解决过的问题,因此能够找到正确的答案。说它与机器学习无关有点牵强。你所说的“获取b和c的值”是指b1和c1或b2和c2或b=b1,b2。。。c=c1,c2。。。或者别的什么?“我不确定我说的半对数步骤实际上是什么意思,但也许有一种方法可以表达出来。”然后你有一个数学问题,而不是编程问题。