【发布时间】:2011-09-09 00:40:12
【问题描述】:
我发现自己使用 csv 阅读器和 for 循环遍历每一行来解析大量数据文件(通常在 .csv 文件或类似文件中)。例如,数据通常是浮点数表。
reader = csv.reader(open('somefile.csv'))
header = reader.next()
res_list = [list() for i in header]
for line in reader:
for i in range(len(line)):
res_list[i].append(float(line[i]))
result_dict = dict(zip(header,res_list)) #so we can refer by column title
这是一种不错的填充方式,因此我将每一列作为一个单独的列表,但是,我希望项目列表(和嵌套列表)的默认数据容器是 numpy 数组,因为 99 超时 100 数字得到注入各种处理脚本/函数并拥有 numpy 列表的强大功能让我的生活更轻松。
numpy append(arr, item) 不会就地追加,因此需要为表中的每个点重新创建数组(这很慢且不必要)。我也可以遍历数据列列表,并在完成后将它们包装到一个数组中(这是我一直在做的),但有时对于 when 我已经完成了文件的解析,并且可能需要在后面的列表中添加一些内容。
我想知道是否有一些不那么繁琐的方法(使用过度使用的短语“pythonic”)以类似的方式处理数据表,或者动态填充数组(其中底层容器是列表)并且无需一直复制数组。
(另一方面:这有点烦人,通常人们使用列来组织数据,但 csv 如果阅读器包含 read_column 参数(是的,我知道它不会非常高效),则按行读取,我认为很多人会避免使用上述样板代码来解析 csv 数据文件。)
【问题讨论】: