import numpy as np
row_num=24983
col_size = 102
arr = np.zeros((row_num,col_num))
arr[:,0]= np.arange(row_num)
当我写它时,它给了我科学记数法数组,
array([[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,
0.00000000e+00, 0.00000000e+00, 0.00000000e+00],
[ 1.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,
0.00000000e+00, 0.00000000e+00, 0.00000000e+00],
[ 2.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,
0.00000000e+00, 0.00000000e+00, 0.00000000e+00],
...,
[ 2.49800000e+04, 0.00000000e+00, 0.00000000e+00, ...,
0.00000000e+00, 0.00000000e+00, 0.00000000e+00],
[ 2.49810000e+04, 0.00000000e+00, 0.00000000e+00, ...,
0.00000000e+00, 0.00000000e+00, 0.00000000e+00],
[ 2.49820000e+04, 0.00000000e+00, 0.00000000e+00, ...,
0.00000000e+00, 0.00000000e+00, 0.00000000e+00]])
但我不想要它。我想要正常的numpy数组,
array([[ 0., 0., 0., ..., 0., 0., 0.],
[ 1., 0., 0., ..., 0., 0., 0.],
[ 2., 0., 0., ..., 0., 0., 0.],
...,
[ 24980., 0., 0., ..., 0., 0., 0.],
[ 24981., 0., 0., ..., 0., 0., 0.],
[ 24982., 0., 0., ..., 0., 0., 0.]])
编辑:我知道np.set_printoptions但我会将数组写入csv文件,当我这样做时,它仍然用科学记数法写入文件。我该怎么办?
答案 0 :(得分:1)
要控制数组的显示方式,可以使用np.set_printoptions设置浮点格式化功能:
In [13]: np.set_printoptions(formatter={'float': '{:g}'.format})
In [14]: arr
Out[14]:
array([[0, 0, 0, ..., 0, 0, 0],
[1, 0, 0, ..., 0, 0, 0],
[2, 0, 0, ..., 0, 0, 0],
...,
[24980, 0, 0, ..., 0, 0, 0],
[24981, 0, 0, ..., 0, 0, 0],
[24982, 0, 0, ..., 0, 0, 0]])
g
格式的含义是described here。虽然g
格式通常成功地以人类可读的方式呈现简单的浮点数而没有指数表示法,但它并不保证从不使用指数表示法。
因此,您可以使用f
格式,
例如np.set_printoptions(formatter={'float': '{:.2f}'.format})
如果你愿意的话
以固定的精度呈现所有浮子。这保证不使用指数表示法。
或者,您可以使用
In [25]: np.set_printoptions(suppress=True)
In [26]: arr
Out[26]:
array([[ 0., 0., 0., ..., 0., 0., 0.],
[ 1., 0., 0., ..., 0., 0., 0.],
[ 2., 0., 0., ..., 0., 0., 0.],
...,
[ 24980., 0., 0., ..., 0., 0., 0.],
[ 24981., 0., 0., ..., 0., 0., 0.],
[ 24982., 0., 0., ..., 0., 0., 0.]])
suppress=True
告诉np.set_printoptions
使用科学记数法禁止打印小浮点值。
要创建CSV文件,请使用
np.savetxt(filename, arr, fmt='%g')
The fmt
parameter允许您使用printf-style string formatting控制浮动格式。