我有一个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
答案 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))