2016-03-05 100 views
0

np.log(someMatrix)生成1.220536239336080619e+01类型的值。我想实际上看到+e01的所有数字。请问有没有办法告诉numpy这样做?我试过around(),但不适合我。Python numpy指数表示法

+0

为什么你说*你不*看到“所有的数字”?如果你有大量的数字,不要忘记浮点数的精确度有限,所以那些放在e + 20浮点上的数字本质上是噪声。 – user2357112

+0

float double最大精度为52位,如果您打印它,可以通过'len(bin())'来检查您有多少东西。其中一个答案建议如下。例如,您的问题中的数字需要63位来完全表示。 – user3467349

回答

1

您可以根据需要使用格式化打印查看浮点数。 但我同意user2357112,最后的数字可能超出精度限制,并不重要。

r=1.220536239336080619e+01 
print "%-.24f"%(r) 

12.205362393360806194664292 
1

当你写你的数据文件,可以在不同的打印格式之间进行选择,%f是一个,不使用指数记数法:

np.savetxt('matrix.txt', np.log(someMatrix), '%f') 
1

可以使用np.array2str有格式是将其显示为不带小数的数字:

import numpy as np 
a = np.array([1434e24]) 
np.array2string(a, formatter={'float_kind':lambda x: "%.0f" % x}) 
# prints '[1433999999999999897558319104]' 

但是请注意,数字是由浮点精度决定的,因此wil我不是你输入的内容。