我正在尝试使用Python3实现一段代码,该代码生成n
等间距数字(可能是合理的)的列表,该列表范围在两个指定数字之间。
例如:
如果n = 3
,x = -1
和y = 1
,则结果应为[-1,0,1]
。
我的假设是,应该使用numpy的arange
以及根据这三个值计算出的步长,但是我无法弄清楚数学。在此简单示例中,步骤将为= 1,但如果为x = 0
和y = 1
,则步骤为.5
。
答案 0 :(得分:4)
您可以使用简单的生成器在不使用numpy
的情况下进行操作:
def numbers(x, y, n):
assert n > 1
step = (y - x) / (n - 1)
for i in range(n):
yield x + i*step
print(list(numbers(-1, 1, 3))) # [-1, 0.0, 1.0]
print(list(numbers(0, 1, 3))) # [0, 0.5, 1.0]
答案 1 :(得分:1)
您似乎正在寻找np.linspace()
,您可以阅读有关here的信息。
例如,根据需要,呼叫np.linspace(-1, 1, 3)
将产生array([-1., 0., 1.])
。
答案 2 :(得分:0)
如Error所指出,这是无需外部包装即可轻松解决的问题,我的解决方案如下:
def partition(min,max,n):
list=[]
for i in range (n):
list.append((max-min)*i/(n-1))
return list