我在Python中有一个numpy浮点数组。
当我打印数组时,第一个值是:
[7.14519700e+04, ....
但是,如果我打印出它自己的第一个值,则打印输出为:
71451.9699799
显然这些数字应该是相同的,所以我只是想知道,数组只是向我展示了该元素的圆形版本?这里的第二个数字有12个有效数字,第一个数字只有9个。
我想我只是想知道为什么这些数字不同?
答案 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
:
>>> 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]