numpy数组元素自动舍入?

时间:2013-02-28 18:00:46

标签: python numpy

我在Python中有一个numpy浮点数组。

当我打印数组时,第一个值是:

[7.14519700e+04, ....

但是,如果我打印出它自己的第一个值,则打印输出为:

71451.9699799

显然这些数字应该是相同的,所以我只是想知道,数组只是向我展示了该元素的圆形版本?这里的第二个数字有12个有效数字,第一个数字只有9个。

我想我只是想知道为什么这些数字不同?

2 个答案:

答案 0 :(得分:5)

它只是在打印中,而不是在存储中。唯一的混淆可能是因为第一个例子使用numpy的打印精度设置,第二个例子是一般python的打印设置。

您可以调整numpy精度并按

打印
numpy.set_printoptions(precision=20)
print myarray`

(根据您的需要调整精度),或选择标准python格式打印中的有效数字:

print ('%.20f' % myarray[0])

数字的内部表示始终相同。

答案 1 :(得分:4)

numpy数组中的类型定义良好。您可以通过检查数组的numpy.dtype属性来获取它们的存储方式。

例如:

import numpy
a = numpy.zeros(10)
print a.dtype

将显示float64,即64位浮点数。

您可以使用常用的dtype参数或dtype type对象(即生成dtype的对象)显式指定数组的类型。

a = numpy.zeros(10, dtype='complex32') # a 32-bit floating point
b = numpy.longdouble(a) # create a long-double array from a

关于打印,这只是一个格式问题。您可以使用numpy.set_printoptions

来调整numpy如何打印数组
>>> a = numpy.random.randn(3) # for interest, randn annoyingly doesn't support the dtype arg
>>> print a
[ 0.12584756  0.73540009 -0.17108244 -0.96818512]
>>> numpy.set_printoptions(precision=3)
>>> print a
[ 0.126  0.735 -0.171 -0.968]