使用numpy.savetxt导出数组时,在每行之前添加注释

时间:2018-02-02 18:36:56

标签: python arrays numpy export

我想在每行和每列的开头导出一个添加注释的数组。

例如,使用以下数组:

[[10,5,2],
 [7,2,6],
 [8,3,1]]

我希望输出文件看起来像这样(或类似):

    1C  2C  3C
1L  10;  5;  2
2L   7;  2;  6
3L   8;  3;  1

问题是numpy数组不接受不同的类型(数组中混合的整数和字符串),所以我不能简单地使用np.savetxt导出。

1 个答案:

答案 0 :(得分:1)

我不知道直接在numpy中执行此操作的方法,但您可以随时遍历数组并将注释和行写入文件。

a = np.array([[10,5,2],[7,2,6],[8,3,1]])

print("   " + " ".join([str(x+1)+"C" for x in range(a.shape[1])]))
for i, row in enumerate(a):
    print("%dL %s" % (i+1, "; ".join(map(str, row))))
#   1C 2C 3C
#1L 10; 5; 2
#2L 7; 2; 6
#3L 8; 3; 1

要写入文件:

with(open('path/to/file', 'w') as f):
    header = "   " + " ".join([str(x+1)+"C" for x in range(a.shape[1])])
    f.write(header + "\n")
    for i, row in enumerate(a):
        line = "%dL %s" % (i+1, "; ".join(map(str, row)))
        f.write(line + "\n")