[英]Rounding values in list when using itertools.accumulate function
我有一个四舍五入到十分之一的数字列表:
myList =
[2.3,
14.4,
21.6,
6.0,
2.6,
4.2,
7.6,
46.7,
8.1,
1.2,
7.6,
6.2,
8.3,
17.7,
27.3,
5.4,
18.6,
6.4,
6.4,
40.4,
28.4,
36.0,
21.5,
4.7,
19.6,
22.0,
18.2,
19.9,
12.1,
20.7,
1.0,
11.8,
1.1,
3.2,
8.0,
6.5,
4.3,
6.4,
4.3,
16.7,
17.8,
2.7,
7.5,
1.5,
2.5,
7.8,
4.4,
10.2,
14.8,
25.1]
当我将此列表输入itertools.accumulate
函数并生成一个新列表(即运行总数)时,由于浮点运算,某些值有几个小数位。
from itertools import accumulate
accumulated_list = list(accumulate(myList))
accumulated_list
输出到:
[2.3,
16.7,
38.3,
44.3,
46.9,
51.1,
58.7,
105.4,
113.5,
114.7,
122.3,
128.5,
136.8,
154.5,
181.8,
187.20000000000002,
205.8,
212.20000000000002,
218.60000000000002,
259.0,
287.4,
323.4,
344.9,
349.59999999999997,
369.2,
391.2,
409.4,
429.29999999999995,
441.4,
462.09999999999997,
463.09999999999997,
474.9,
476.0,
479.2,
487.2,
493.7,
498.0,
504.4,
508.7,
525.4,
543.1999999999999,
545.9,
553.4,
554.9,
557.4,
565.1999999999999,
569.5999999999999,
579.8,
594.5999999999999,
619.6999999999999]
我参考了一些主要的帖子和教程,但无法修复我的accumulated_list
:
将浮点数限制为两位小数
https://docs.python.org/3/tutorial/floatingpoint.html
如何将这些值解析为再次四舍五入到十分之一的数字? (不是格式化打印,而是四舍五入值。)
我试过使用
list(numpy.round(accumulate(myList),1))
或使用decimal
模块将数字设置为decimal
但无济于事。
list(accumulate(myList.quantize(Decimal('0.1'))))
添加有关将元素实现为十进制的更多信息。 上面的myList
是从一个函数生成的。 如何将元素实现为decimal
?
import numpy as np
def simulate(mean, size):
return list(np.round(np.random.exponential(mean, size), 1))
myList = simulate(15, 50)
你可以这样做:
import numpy as np
accumulated_list = np.around(np.cumsum(myList), decimals=1)
谢谢
您可以简单地将它们round
到一位小数:
accumulated_list = list(map(lambda x: round(x, 1), accumulate(myList)))
您可以使用round
函数对结果进行round
。 使用map
和lambda
功能,通过产生每一个项目做accumulate
。
accumulated = map(lambda x: round(x, 1), accumulate(myList))
print(list(accumulated))
# outputs the following list
[2.3, 16.7, 38.3, 44.3, 46.9, 51.1, 58.7, 105.4, 113.5, 114.7, 122.3, 128.5, 136.8, 154.5, 181.8, 187.2, 205.8, 212.2, 218.6, 259.0, 287.4, 323.4, 344.9, 349.6, 369.2, 391.2, 409.4, 429.3, 441.4, 462.1, 463.1, 474.9, 476.0, 479.2, 487.2, 493.7, 498.0, 504.4, 508.7, 525.4, 543.2, 545.9, 553.4, 554.9, 557.4, 565.2, 569.6, 579.8, 594.6, 619.7]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.