【发布时间】:2019-02-13 17:58:27
【问题描述】:
众所周知 [1] [2] numpy.loadtxt 在加载包含数字的简单文本文件时并不是特别快。
我一直在寻找替代方案,当然我偶然发现了 pandas.read_csv 和 astropy io.ascii。然而,这些阅读器似乎并不容易从他们的库中分离出来,我想避免添加一个 200 MB、5 秒导入时间的 gorilla 来阅读一些 ascii 文件。
我通常阅读的文件很简单,没有丢失数据,没有格式错误的行,没有 NaN,只有浮点,空格或逗号分隔。但我需要 numpy 数组作为输出。
有谁知道上述任何解析器是否可以独立使用或我可以使用的任何其他快速解析器?
提前谢谢你。
[1]Numpy loading csv TOO slow compared to Matlab
[2]http://wesmckinney.com/blog/a-new-high-performance-memory-efficient-file-parser-engine-for-pandas/
[编辑 1]
为了清楚起见并减少背景噪音:正如我在开始时所说,我的 ascii 文件包含简单的浮点数,没有科学记数法,没有特定于 fortran 的数据,没有有趣的东西,只有 简单的浮点数。
示例:
{
arr = np.random.rand(1000,100)
np.savetxt('float.csv',arr)
}
【问题讨论】:
-
类似的当前问题,stackoverflow.com/questions/52232559/…。不是重复的,因为它也没有答案。
-
加载数组的典型形状是什么?
-
请提供一些示例行。
-
如果导入时间是个问题,我想知道您是否只需拉入
pandas.io的相关部分即可节省一些时间,以避免获取完整的 API。 -
@hjpauli,它变化很大,我有一些文件包含大约 30x3 的数据,还有许多文件高达 10,000x9。
标签: pandas performance numpy ascii astropy