python - 迭代numpy arange会改变值
问题描述
我正在使用一个 numpy 范围。
[In] test = np.arange(0.01, 0.2, 0.02)
[In] test
[Out] array([0.01, 0.03, 0.05, 0.07, 0.09, 0.11, 0.13, 0.15, 0.17, 0.19])
但是,如果我遍历这个数组,它会遍历稍小的值。
[In] for t in test:
.... print(t)
[Out]
0.01
0.03
0.049999999999999996
0.06999999999999999
0.08999999999999998
0.10999999999999997
0.12999999999999998
0.15
0.16999999999999998
0.18999999999999997
为什么会这样?
为了避免这个问题,我一直在四舍五入,但这是解决这个问题的最佳方法吗?
for t in test:
print(round(t, 2))
解决方案
我认为评论中提到的浮点数的性质是问题所在。
如果你仍然认为你害怕离开它,我建议你将你的数字乘以 100,然后使用整数:
test = np.arange(1, 20, 2)
print(test)
for t in test:
print(t / 100)
这给了我以下输出:
[ 1 3 5 7 9 11 13 15 17 19]
0.01
0.03
0.05
0.07
0.09
0.11
0.13
0.15
0.17
0.19
或者,您也可以尝试以下方法:
test = np.arange(1, 20, 2) / 100
推荐阅读
- javascript - 在一级 ImmutableJS 上获取多个元素
- powershell - 在o365通讯录中隐藏学生 - powershell
- javascript - d3.js 雷达图标签旋转
- regex - 正则表达式匹配除某些单词之外的所有小写字符
- python - 寻求对 Dask vs Numpy vs Pandas 基准测试结果的解释
- web2py - Web2py 模块:找不到具有您请求的功能的树构建器:html.parser。您需要安装解析器库吗?
- javascript - AngularJS / javascript - 将唯一值对象展平为简单列表
- python - 应该如何使用大量 wav 文件中的 tensorflow.data.Dataset api 创建数据集?
- javascript - 显示微调器直到数据反映在 DOM 角度
- gcloud - 如何获取 Google 项目 ID - 而不是项目名称