相关疑难解决方法(0)

如何将两个列表组合到Python中的字典中?

我有两个相同长度的列表:

[1,2,3,4][a,b,c,d]

我想创建一个我所拥有的字典 {1:a, 2:b, 3:c, 4:d}

最好的方法是什么?

python dictionary list

77
推荐指数
5
解决办法
9万
查看次数

Numpy以不同于python的方式进行回合

代码

import numpy as np
a = 5.92270987499999979065
print(round(a, 8))
print(round(np.float64(a), 8))
Run Code Online (Sandbox Code Playgroud)

5.92270987
5.92270988
Run Code Online (Sandbox Code Playgroud)

知道为什么吗?

在numpy来源中找不到任何相关内容.

更新:
我知道处理这个问题的正确方法是以这种差异无关紧要的方式构建程序.我做的.我在回归测试中偶然发现了它.

Update2:
关于@VikasDamodar评论.人们不应该相信这个repr()功能:

>>> np.float64(5.92270987499999979065)
5.922709875
>>> '%.20f' % np.float64(5.92270987499999979065)
'5.92270987499999979065'
Run Code Online (Sandbox Code Playgroud)

Update3:
在python3.6.0 x32,numpy 1.14.0,win64上测试.另外在python3.6.4 x64,numpy 1.14.0,debian.

Update4:
只是为了确定:

import numpy as np
a = 5.92270987499999979065
print('%.20f' % round(a, 8))
print('%.20f' % round(np.float64(a), 8))

5.92270987000000026512
5.92270988000000020435
Run Code Online (Sandbox Code Playgroud)

Update5:
以下代码演示了在不使用str以下情况下发生差异的阶段:

>>> np.float64(a) - 5.922709874
1.000000082740371e-09
>>> a - 5.922709874
1.000000082740371e-09
>>> round(np.float64(a), 8) - 5.922709874
6.000000496442226e-09
>>> round(a, 8) - …
Run Code Online (Sandbox Code Playgroud)

python numpy rounding-error rounding

7
推荐指数
1
解决办法
219
查看次数

标签 统计

python ×2

dictionary ×1

list ×1

numpy ×1

rounding ×1

rounding-error ×1