7

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

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

[7.14519700e+04, ....

但是,如果我只打印出它自己的第一个值,则打印出的内容如下:

71451.9699799

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

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

4

2 回答 2

8

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

您可以调整 numpy 精度并通过以下方式打印

numpy.set_printoptions(precision=20)
print myarray`

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

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

数字的内部表示总是相同的。

于 2013-02-28T18:12:25.697 回答
4

numpy 数组中的类型定义明确。numpy.dtype您可以通过检查数组的属性来了解它们的存储方式。

例如:

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

将显示float64,这是一个 64 位浮点数。

您可以使用通常接受的 dtype 参数或 dtypetype对象(即构成 dtype 的东西)显式指定数组的类型。

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

关于打印,这只是一个格式问题。您可以使用以下方法来调整 numpy 如何打印数组numpy.set_printoptions

>>> 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]
于 2013-02-28T18:03:52.573 回答