在python中有一个范围,其参数是两个坐标而不是整数?

时间:2014-11-19 17:03:08

标签: python arrays numpy matrix

我希望我的范围从1坐标到另一个坐标,但是内置范围函数仅限于整数参数。 这有可能吗?

2 个答案:

答案 0 :(得分:1)

numpy提供了一个与range类似的函数,可以使用浮点数。它被称为arange

>>> numpy.arange(0.1,0.5, 0.1)
array([ 0.1,  0.2,  0.3,  0.4])

答案 1 :(得分:0)

您可以非常轻松地创建自己的浮点值之间的生成器。像这样:

def myfloatrange(initial,final,step,places):
    i = int(initial*10**places)
    f = int(final*10**places)
    s = int(step*10**places)
    for x in range(i,f,s):
        yield x/(10**places)

测试:

r = myfloatrange(0.1,1.1,0.13,1)
next(r)  #0.1
next(r)  #0.2
for x in r: print(x)
#Output:
#0.3
#0.4
#0.5
#0.6
#0.7
#0.8
#0.9
#1.0
r = myfloatrange(0.1,1.1,0.13,2)
for x in r: print(x)
#Output:
#0.1
#0.23
#0.36
#0.49
#0.62
#0.75
#0.88
#1.01
r = myrange(97.6,77.152,-1.721,3)
for x in r: print(x)
#97.6
#95.879
#94.158
#92.437
#90.716
#88.995
#87.274
#85.553
#83.832
#82.111
#80.39
#78.669

请注意,如果输入的step小于1并且places = 0,则会收到错误。这是因为在这种情况下,您基本上将step设置为零,这毫无意义。