将列表从csv文件转换为numpy array_csv格式

时间:2013-12-05 05:03:15

标签: python arrays excel csv numpy

这篇文章读取一个csv文件,创建一个列表并将列表转换为numpy.array:

with open ('infile.csv', 'r') as infile:
    reader = csv.reader(infile)
    reader_list = list(reader)
    reader_array = array(reader_list)

这个2d数组形状是:

print reader_array.shape
(2938, 6)

当某些其他数据添加到csv文件(比如另外2000行乘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的格式吗? 即使csv.writer(outfile, dialect='excel')没有帮助。

1 个答案:

答案 0 :(得分:0)

我不确定,但也许您可以尝试阅读二进制文件:

with open ('infile.csv', 'rb') as infile:

因为我知道处理'r''rb'之间的换行符存在一些差异,所以在Excel中保存文件可能会改变换行符的某些表示形式。

另外,也许你可以分享你输入文件的示例版本来说明。