2017-09-24 19 views
-4

当我测试我的神经网络时,它返回一个包含8个元素的数组,每个元素代表一个概率。但最后的值有+-如何从np float64中删除符号而不舍入值

例子:

[ 2.12038518e-02 1.70870308e+00 7.12621361e-02 5.11754828e-05 
4.90492326e-05 4.06466628e-05 7.70227110e-05 4.70098399e-05] 

当我现在尝试使用np.argmax功能它总是在最后返回与+00值虽然它不是最大的。当我尝试将它们四舍五入,然后使用argmax时,会发生同样的情况。 我的问题:如何在不舍入值的情况下删除记号?

+1

我相当确信1.70870308大于0.000077022711。 – Fanael

+2

你[只是问](https://stackoverflow.com/questions/46388633/what-does-0x-or-0x-at-the-end-of-np-float64-arrays-mean)符号的含义。 'argmax'结果真的不应该让你感到惊讶。 – MSeifert

回答

3

该函数正是因为该值最大才返回值+00

以下:

[ 2.12038518e-02 1.70870308e+00 7.12621361e-02 5.11754828e-05 4.90492326e-05 4.06466628e-05 7.70227110e-05 4.70098399e-05 ]

只是写入的更紧凑的方式:

[ 0.0212038518 1.70870308 0.0712621361 0.0000511754828 0.0000490492326 0.0000406466628 0.0000770227110 0.0000470098399 ]

(以上两个是相等的,前者是只是的首选方式。显示它。)

可以很容易地看出,在八个值中,1.70870308是最大的一个,这就是它返回的原因。

+0

你知道如何以正确的“形状”显示它吗? – MrPete

+0

您可以尝试'np.set_printoptions(suppress = True)'。但请记住,它会将您看到的输出截断为设置精度(默认值= 8),因此例如“0.0000470098399”将显示为“0.00004701”。 (你可以通过例如'np.set_printoptions(precision = 16)'来调整它。) –

+1

无论如何,科学记数法(带有'e + 00'的那个记号)在长期运行中会变得有用,所以我建议在某个时刻坚持它。 –