2017-03-19 388 views
0

我的值当前在数组中显示为1.00+e09(类型为float64)。我希望他们改为显示1000000000。这可能吗?将numpy数组值转换为整数

+0

您是否想要使用'float64',或者您希望数据实际上只是整数? – Eric

+0

我希望他们是整数。我试图在计算后将值写回csv文件,然后将csv文件转换为excel文件。现在,我的excel文件中的值显示为1.00 + e09表单,我无法在excel上使用它。 – Student1001

回答

1

做一个样品阵列

In [206]: x=np.array([1e9, 2e10, 1e6]) 
In [207]: x 
Out[207]: array([ 1.00000000e+09, 2.00000000e+10, 1.00000000e+06]) 

我们可以转换为整数 - 除了通知,最大的一个太大的默认INT32

In [208]: x.astype(int) 
Out[208]: array([ 1000000000, -2147483648,  1000000]) 

In [212]: x.astype(np.int64) 
Out[212]: array([ 1000000000, 20000000000,  1000000], dtype=int64) 

写入与默认格式(浮点)的CSV(不管阵列D型的,这是默认格式):

In [213]: np.savetxt('text.txt',x) 
In [214]: cat text.txt 
1.000000000000000000e+09 
2.000000000000000000e+10 
1.000000000000000000e+06 

我们可以指定格式:

In [215]: np.savetxt('text.txt',x, fmt='%d') 
In [216]: cat text.txt 
1000000000 
20000000000 
1000000 

潜在的有3个问题:

  • 整数v浮在阵列本身,它的dtype
  • 阵列
  • 的显示或打印
  • 将数组写入csv文件
+0

谢谢,这有助于加载。 :) – Student1001

0

这是一个打印选项,请参阅文档:printing options。简单地说:你需要使用抑制选项打印时:

np.set_printoptions(suppress=True) # for small floating point. 

np.set_printoptions(suppress=True, formatter={'all':lambda x: str(x)}) 
+0

但重读'压制'。它与显示小浮点有关,而不是大浮点。例如1E-9。 – hpaulj

+0

@hpaulj,true;但后来我只是使用格式化程序。 – gregory