为numpy数组添加索引

5

我有一个numpy数组,如下所示:

prob_rf = [[0.4, 0.4, 0.4], 
           [0.5, 0.5, 0.5], 
           [0.6, 0.6, 0.6]]

我想为每个内部数组添加一个索引编号,如下所示:

prob_rf = [[1, 0.4, 0.4, 0.4],
           [2, 0.5, 0.5, 0.5],
           [3, 0.6, 0.6, 0.6]]

然后使用numpy.savetxt将该数组保存到csv文件中。

我当前的操作是:

    id = [i for i in xrange(1,len(prob)+1)]
    prob_rf = np.insert(prob_rf, 0, id, axis=1)
    np.savetxt("foo.csv", prob_rf, delimiter=",", fmt='%1.1f')

但是这会输出


[[1.0, 0.4, 0.4, 0.4], 
 [2.0, 0.5, 0.5, 0.5], 
 [3.0, 0.6, 0.6, 0.6]]

请问如何获得以下输出结果:
[[1, 0.4, 0.4, 0.4], 
 [2, 0.5, 0.5, 0.5], 
 [3, 0.6, 0.6, 0.6]]

如果这不是你想要的,为什么要告诉numpy使用fmt ='%1.1f'格式化所有内容? - Carsten
这是因为我想要它们的格式为 [0.4,0.4,0.4],否则 np.savetext 会保存为 [4.00E-01,4.00E-01,4.00E-01],而这不是我想要的。 - VeilEclipse
1个回答

7
使用带有fmt参数的列表来指定每列的格式:
fmt=['%d', '%1.1f', '%1.1f', '%1.1f']

完整示例:

import numpy as np
prob_rf = [[1, 0.4, 0.4, 0.4],
           [2, 0.5, 0.5, 0.5],
           [3, 0.6, 0.6, 0.6]]
np.savetxt("foo.csv", prob_rf, delimiter=",", fmt=['%d', '%1.1f', '%1.1f', '%1.1f'])

生成的文件:
1,0.4,0.4,0.4
2,0.5,0.5,0.5
3,0.6,0.6,0.6

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