在Python中计算精确数量值的范围
我正在创建两个数字(浮点数)之间的一个范围,我希望这个范围的长度是固定的(不能多也不能少)。而 range
和 arange
是按照步长来工作的。用伪Python代码来说,我想实现的功能是:
start_value = -7.5
end_value = 0.1
my_range = my_range_function(star_value, end_value, length=6)
print my_range
[-7.50,-5.98,-4.46,-2.94,-1.42,0.10]
这实际上和R语言中的 seq
函数是一样的,后者可以指定一个给定长度的序列。在Python中可以做到这一点吗?
谢谢。
5 个回答
2
def my_function(start, end, length):
len = length - 1
incr = (end-start) / len
r = [ start ]
for i in range(len):
r.append ( r[i] + incr )
return r
当然可以!请把你想要翻译的内容发给我,我会帮你把它变得简单易懂。
4
可以查看这个链接:Recipe 66472: frange(), 一个可以用浮点数递增的范围函数(Python),里面有各种浮点数实现的优缺点。
另外,如果你对精度要求比较高,可以使用 decimal.Decimal
来代替浮点数(先转换成这个类型,然后再转换回来),具体可以参考这个链接:Python decimal range() 步长值。
6
使用NumPy里的linspace()函数。
>>> from numpy import linspace
>>> linspace(-7.5, 0.1, 6)
array([-7.5 , -5.98, -4.46, -2.94, -1.42, 0.1])
>>> linspace(-7.5, 0.1, 6).tolist()
[-7.5, -5.9800000000000004, -4.46, -2.9399999999999995, -1.4199999999999999, 0.10000000000000001]
这个方法应该是最有效和最准确的。