Numpy数组被取整?小浮点数减法

2024-09-28 23:12:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我将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

输出如下:

^{pr2}$

我以为v1是这样的:

[-0.044018 0 0]

我是新手,我承认,这可能是对numpy和float工作原理的一个明显的误解。我以为改变纽比打印选项可以解决问题,但运气不好。任何帮助都太好了!谢谢!在


Tags: 代码命令行importnumpy元素报告np数组
2条回答

您正在使用integer数据类型创建数组(因为您没有指定它,NumPy使用您给它的初始数据的类型)。使其成为浮动:

>>> v1 = np.array([0,0,0], dtype=np.float)
>>> v1[0] = pc1x-pc2x
>>> print v1
[-0.04401800000000000157  0.                      0.                    ]

或更改传入数据类型:

^{pr2}$

使用v1 = np.array([0,0,0])声明数组,numpy假设您需要一个int数组。对它的任何后续操作都将保持这个int数组的状态,因此在添加了您的小数元素之后,它将强制转换回int(结果是所有的零)。用

v1 = np.array([0,0,0],dtype=float)

numpy有大量特定于numpy的/特定于平台的数据类型在dtype docs page.中有详细说明

相关问题 更多 >