gpt4 book ai didi

python:生成间隔不均匀的数组

转载 作者:太空宇宙 更新时间:2023-11-03 11:00:59 25 4
gpt4 key购买 nike

我想生成一个由下限值和上限值界定的数组,n 个元素类似于:

def my_lin(lb, ub, steps):
dx = (ub-lb) / (steps-1)
return [lb + i*dx for i in range(steps)]

my_lin(0,10,11)

但我希望更多的值更接近于较低的值。某种谐波间隔。我不想有对数间距。

我想这很简单,但我无法弄清楚。非常感谢任何帮助。

编辑:

我想到了以下快速解决方案:

def harm_series(lb,n):
return [float(lb)/float(i) for i in range(1,n) ]

最佳答案

找到一个函数 f,它在 [0,1] 内有你想要的间距(注意 f(0)==0 和 f(1) ==1 应该成立)然后应用 f(i*dx/(ub-lb))*(ub-lb)

我个人喜欢这个的幂函数,但还有更多。例如,试试这个:

def my_lin(lb, ub, steps, spacing=1.1):
span = (ub-lb)
dx = 1.0 / (steps-1)
return [lb + (i*dx)**spacing*span for i in range(steps)]

lin = my_lin(0, 10, 11)
print lin
# visualize the spacing
print ''.join(' '*int(2*a)+'*' for a in lin)

打印:

[0.0, 0.7943282347242814, 1.702679845041569, 2.6597044516956405, 3.6497741462219233, 4.665164957684037, 5.701201299034059, 6.754727665838724, 7.823462148343428, 8.905673323855929, 10.0]
* * * * * * * * * * *

现在使用参数 spacing 它的工作原理如下:

  • 你越接近零,你的值(value)就越集中在ub
  • 你从 1 向另一个方向走得越远,它们就越聚集在 lb
  • 周围
  • 如果spacing正好为1,则它们是等间距的

关于python:生成间隔不均匀的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32504766/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com