wil*_*727 2 python arrays numpy pretty-print rounding
我将numpy数组的元素分配为等于“小”值的python浮点型数字的减法。当我这样做时,尝试通过打印到命令行来验证结果,该数组将报告为全零。这是我的代码:
import numpy as np
np.set_printoptions(precision=20)
pc1x = float(-0.438765)
pc2x = float(-0.394747)
v1 = np.array([0,0,0])
v1[0] = pc1x-pc2x
print pc1x
print pc2x
print v1
Run Code Online (Sandbox Code Playgroud)
输出看起来像这样:
-0.438765
-0.394747
[0 0 0]
Run Code Online (Sandbox Code Playgroud)
我对v1期望如此:
[-0.044018 0 0]
Run Code Online (Sandbox Code Playgroud)
我承认,我是numpy的新手,这可能是对numpy和float的工作方式的明显误解。我以为更改numpy打印选项可以解决,但没有运气。任何帮助都很棒!谢谢!
您使用声明数组v1 = np.array([0,0,0]),numpy假设您要使用int数组。对其执行的任何后续操作都将保持此int数组状态,因此,在明智地添加了小数元素之后,它将强制转换回int(结果为全零)。用它声明
v1 = np.array([0,0,0],dtype=float)
Run Code Online (Sandbox Code Playgroud)
dtype docs页面中详细介绍了用于numpy的大量numpy特定/平台特定的数据类型。