要使用scikit进行交叉验证,我尝试将数据帧提前转换为numpy数组。所以我尝试了函数df.as_matrix(),事实证明数据看起来很奇怪。我想知道这是否正常。为什么必须以这种奇怪的格式显示?
例如:585变为5.85000000e + 02,和 0变为0.00000000e + 00答案 0 :(得分:0)
如果数组中的大/小值需要科学记数法是合理的,则会发生这种情况:在这种情况下,numpy以科学记数法打印所有值。例如:
In [65]: z
Out[65]:
array([[ 1.00000000e+10, 1.00000000e+00, 2.00000000e+00],
[ 2.00000000e+00, 1.00000000e+00, 1.00000000e+00]])
In [66]: z[0,0]
Out[66]: 10000000000.0
In [67]: z[0,0]=1
In [68]: z
Out[68]:
array([[ 1., 1., 2.],
[ 2., 1., 1.]])
可以使用np.set_printoptions
修改此行为,但您需要弄清楚您想要的行为。如果你的数字很大,suppress=
实际上并不起作用。有关详情,请参阅this answer。
基本上,numpy希望您的数字始终打印,而不是以最方便的格式打印。除了编写自己的浮点格式化程序并将其传递给set_printoptions
之外,似乎没有一种简单的方法可以改变它。
实际上,试试这个:
In [102]: np.set_printoptions(formatter={'float':"{:6.5g}".format})
In [103]: z
Out[103]:
array([[ 1e+10, 1, 2],
[ 2, 1, 1]])
这实际上告诉numpy格式化浮点数,因为它们由format
格式化"{:6.5g}"
Thread.currentThread()
作为format specification。