繁体   English   中英

(Python)numpy genfromtxt转换问题

[英](Python) numpy genfromtxt convert problem

我用

netdata = num.genfromtxt('resultscut.rw', dtype=None, delimiter = '|', usecols=(0,1,2,3,4))

从文本数据文件中生成列表。 这真的很不错,但是当我放一个更大的数据文件进行转换时,出现此错误:

  File "/home/.local/lib/python2.7/site-packages/numpy/lib/npyio.py", line 2047, in genfromtxt
    for (i, conv) in enumerate(converters)]))
MemoryError

对于genfromtxt来说太大了吗? 我该如何解决?

预先感谢您,问候:)

如评论中所讨论的,生成的对象可能对您的内存而言太大。

Numpy能够将阵列存储在磁盘上(希望SSD,如果您使用HDD,这可能会太慢)。 这称为内存映射

可以将数据类型(例如字符串)存储在memmap中,但这会变得棘手: numpy.memmap是否包含字符串数组?

另外,首先将数据放入memmap可能很复杂。 您可能想要分割文件并多次加载。 然后,您可以将各个部分一一写入到内存映射中。

另一个重要的方面可能是dtype 您指定None并使用许多列。 您在不同的列中有不同的数据类型吗? 如果是,则可能要切换到pandas而不是numpy。 这样可以为该电子表格提供适当的数据类型,例如数据。 确保为每一列使用适当的数据类型。 这可以大大减少您的内存占用(并且可能已经解决了您的问题): https : //www.dataquest.io/blog/pandas-big-data/

要检查numpy数组的内存占用量,可以使用nbytes

np.ones((10,10), dtype="float64").nbytes # 800
np.ones((10,10), dtype="int32").nbytes # 400

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM