【发布时间】:2013-12-21 21:53:58
【问题描述】:
这一段读取一个 csv 文件,创建一个列表并将该列表转换为一个 numpy.array:
with open ('infile.csv', 'r') as infile:
reader = csv.reader(infile)
reader_list = list(reader)
reader_array = array(reader_list)
这个二维数组形状是:
print reader_array.shape
(2938, 6)
当一些其他数据添加到 csv 文件(比如另外 2000 行 x 6 列)时,数组变为 1d,可能是因为形状不均匀。但如果我打开这个 csv 文件,请按 ctrl+s 并接受 Excel 不兼容格式警告 以保存 csv,然后再次运行代码就可以了!
print reader_array.shape
(2938, 12)
我了解打开和快速保存 csv 文件会更改其格式,因为文件大小比原始文件小,但无法弄清楚它们有何不同。创建这个 csv 文件的代码如下:
with open ('outfile2.csv', 'wb') as outfile:
writer = csv.writer(outfile)
.
.
.
data = loadtxt(fname_...)
.
.
.
list_.append(sublist_)
for row in izip_longest(*averages_, fillvalue = ['']):
writer.writerow(list(chain.from_iterable(row)))
写入 csv 文件的输出如下:
['1689.000000', '0.000954', '0.007900', '0.017542', '0.057176', 94.164925128317591, '1689.000000', '0.001107', '0.007444', '0.018361', '0.059156', 94.151092414521969]
['1690.000000', '0.001025', '0.007925', '0.018905', '0.060608', 94.165950129377109, '1690.000000', '0.001316', '0.007463', '0.017517', '0.058879', 94.152408118013895]
['1691.000000', '0.001124', '0.008067', '0.017934', '0.058068', 94.167074126395363, '1691.000000', '0.001226', '0.007473', '0.016914', '0.057320', 94.153634253740464]
有人可以解释一下这里发生了什么吗?我可以在编写 csv 以使其正常工作时更改其格式吗?
即使csv.writer(outfile, dialect='excel') 也无济于事。
【问题讨论】:
标签: python arrays excel csv numpy