将numpy数组写入带有行索引和标题的CSV

时间:2015-07-23 21:39:53

标签: python numpy

我有一个numpy数组。

values = np.array([14, 21, 13, 56, 12])

我想在CSV文件的一列中写入values,在另一列中写入行索引,以及标题。我发现了这个功能:

numpy.savetxt("foo.csv", values, header="Id,Values", delimiter=",")

我不确定如何添加索引(1, 2, 3, 4, 5)。此外,我的标题是# Id,Values。我不确定#来自哪里。这就是我得到的:

# Id,Values
14
21
13
56
12

我想要这样的事情:

Id,Values
1,14
2,21
3,13
4,56
5,12

3 个答案:

答案 0 :(得分:5)

可能有更好的方法,但我认为你不能直接使用numpy.savetxt:

import  numpy as np

arr = np.array([14 ,21, 13, 56, 12])
np.savetxt("foo.csv", np.dstack((np.arange(1, arr.size+1),arr))[0],"%d,%d",header="Id,Values")

* #documented的默认行为:

将添加到页眉和页脚字符串的字符串,以将其标记为注释。默认值:'#',正如所期望的那样numpy.loadtxt。*

您可以使用comments="",但这是有原因的。

答案 1 :(得分:2)

[1, 2, 3, 4].instance_eval { self.push(self[0]) }
# => [1, 2, 3, 4, 1]

您可以通过显式设置 import pandas as pd dt = pd.DataFrame(data=a) dt.to_csv('/test_csv.csv', mode='a', index=True) 或默认值来在pandas中使用to_csv函数。

答案 2 :(得分:1)

假设你对基于0的索引感到满意,你可以很容易地用csv做到这一点:

import numpy as np
import csv

a = np.array([14, 21, 13, 56, 12])

with open('out.csv', 'wb') as fh:
    writer = csv.writer(fh, delimiter=',')
    writer.writerow(['id','val'])
    writer.writerows(enumerate(a))