将numpy数组的值转换为整数

5

我的值在一个数组中显示为1.00+e09(类型为float64)。我希望它们显示为1000000000。这可能吗?


你想使用float64吗?还是数据实际上只需要是整数? - Eric
我希望它们是整数。经过一些计算后,我想将值写回到 CSV 文件中,然后将 CSV 文件转换为 Excel 文件。目前,我的 Excel 文件中的值显示为 1.00+e09 形式,我无法在 Excel 上处理它们。 - Student1001
2个回答

11
创建一个示例数组。
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)

使用默认格式(float)编写csv(无论数组的数据类型如何,这都是默认格式):

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文件

谢谢,这帮了很多。 :) - Student1001

0

这是一个打印选项,请参阅文档:打印选项。简而言之,当打印时需要使用抑制选项:

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

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

但是请再次阅读“suppress”。它与小浮点数的显示有关,而不是大浮点数。例如1e-9。 - hpaulj

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接