【问题标题】:Converting lists from csv file to numpy array_csv format将列表从 csv 文件转换为 numpy array_csv 格式
【发布时间】: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


    【解决方案1】:

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

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

    因为我知道'r''rb' 在处理换行时存在一些差异,所以将文件保存在 Excel 中可能会更改换行的某些表示。

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

    【讨论】:

    • 谢谢,但没有做任何改变:(
    • @PyLearner 你介意把你的代码放在pastebin 这样的地方,这样我就可以试试了吗?
    • 以前没听说过! :) 就像 [pastebin.com/YvFp0RKL].我认为您应该将其粘贴到您的地址栏。
    • 顺便说一句,请在我的其他 q 中查看输入文件:stackoverflow.com/questions/20339934/…
    • @PyLearner 我不确定我是否明白你的意思。这种直观的输出方式是你想要的吗? for row in averages_: for r in row: writer.writerow(r)
    猜你喜欢
    • 2019-06-20
    • 2019-12-12
    • 2018-01-17
    • 1970-01-01
    • 2019-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-13
    相关资源
    最近更新 更多