Sco*_*t B 8 python numpy export-to-csv
我想将2D数组保存到CSV文件中,该文件包含行和列"标题"信息(如表格).我知道我可以使用numpy.savetxt的头参数来保存列名,但有没有简单的方法来包含一些其他数组(或列表)作为第一列数据(如行标题)?
下面是我目前如何做的一个例子.有没有更好的方法来包含那些行标题,也许有一些技巧与savetxt我不知道?
import csv
import numpy as np
data = np.arange(12).reshape(3,4)
# Add a '' for the first column because the row titles go there...
cols = ['', 'col1', 'col2', 'col3', 'col4']
rows = ['row1', 'row2', 'row3']
with open('test.csv', 'wb') as f:
writer = csv.writer(f)
writer.writerow(cols)
for row_title, data_row in zip(rows, data):
writer.writerow([row_title] + data_row.tolist())
Run Code Online (Sandbox Code Playgroud)
也许你更愿意做这样的事情:
# Column of row titles
rows = np.array(['row1', 'row2', 'row3'], dtype='|S20')[:, np.newaxis]
with open('test.csv', 'w') as f:
np.savetxt(f, np.hstack((rows, data)), delimiter=', ', fmt='%s')
Run Code Online (Sandbox Code Playgroud)
这是隐式转换data为字符串数组,对于我的计算机中的每百万个项目大约需要200毫秒.
dtype '|S20'表示20个字符的字符串.如果它太低,你的号码就会被砍掉:
>>> np.asarray([123], dtype='|S2')
array(['12'],
dtype='|S2')
Run Code Online (Sandbox Code Playgroud)
另一种选择,从我的有限测试来看是慢的,但是给你更多的控制并且没有使用的切碎问题np.char.mod,比如
# Column of row titles
rows = np.array(['row1', 'row2', 'row3'])[:, np.newaxis]
str_data = np.char.mod("%10.6f", data)
with open('test.csv', 'w') as f:
np.savetxt(f, np.hstack((rows, str_data)), delimiter=', ', fmt='%s')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7083 次 |
| 最近记录: |