我认为这应该是一个简单的问题......但它已经让我有一段时间了:(
我希望从指定最大值和增量的输入创建一个以零为中心的数字列表。所以,
max = 100
increment = 1
会回来
[-100,-99,-98,...,-1,0,1,...,99,100]
和
max = 35
increment = 0.2
会回来
[-35.0,-34.8,...,-0.2,0,0.2,...34.8,35.0]
如果增量没有整齐地划分为最大值,则需要做一个简短的最后一步(例如,如果以 0.3 增量计数到 1,它将运行[-1.0,-0.6,-0.3,0.0,0.3,0.6,0.9,1.0]
list(numpy.linspace())
似乎是要走的路,但我似乎对如何以除了最简单的情况之外的任何事情所描述的方式进行这项工作有一个完整的心理障碍。
建议赞赏!
编辑:我自己的解决方案是
def mylist(stop,step):
a = list(np.arange(0,-stop,-step))+[-stop]
a.reverse()
b = list(a)
c = list(np.arange(0,stop,step))+[stop]
d = b+c
d.remove(0)
e = list(d)
return e
这非常笨拙,即使我也能看到。
最好的答案是:
def mirrored(maxval, inc):
x = np.arange(inc, maxval, inc)
if x[-1] != maxval:
x = np.r_[x, maxval]
return np.r_[-x[::-1], 0, x]
但我将不得不多用谷歌来了解为什么会这样(也不确定我是否要四舍五入......增量的输入可能被合法地指定为多于一位小数)