我将numpy数组的元素指定为等于" small"的减法。有价值的,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
输出如下:
-0.438765
-0.394747
[0 0 0]
我期待v1:
[-0.044018 0 0]
我不熟悉numpy,我承认,这可能是对numpy和float工作方式的明显错误理解。我认为改变numpy打印选项会修复,但没有运气。任何帮助都很棒!谢谢!
答案 0 :(得分:4)
您正在使用v1 = np.array([0,0,0])
声明数组,numpy假定您想要一个int数组。对它的任何后续操作都将保持此int数组状态,因此在添加小数字元素之后,它会强制转换为int(导致全部为零)。用
v1 = np.array([0,0,0],dtype=float)
中详细介绍了针对numpy的大量numpy特定/平台特定数据类型
答案 1 :(得分:1)
您正在使用整数数据类型创建数组(因为您没有指定它,NumPy使用您给出的初始数据的类型)。让它成为一个浮动:
>>> v1 = np.array([0,0,0], dtype=np.float)
>>> v1[0] = pc1x-pc2x
>>> print v1
[-0.04401800000000000157 0. 0. ]
或更改传入的数据类型:
>>> v1 = np.array([0.0, 0.0, 0.0])
>>> v1[0] = pc1x-pc2x
>>> print v1
[-0.04401800000000000157 0. 0. ]