首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >(Python) numpy genfromtxt转换问题

(Python) numpy genfromtxt转换问题
EN

Stack Overflow用户
提问于 2018-11-05 06:29:30
回答 1查看 254关注 0票数 0

我使用

代码语言:javascript
复制
netdata = num.genfromtxt('resultscut.rw', dtype=None, delimiter = '|', usecols=(0,1,2,3,4))

若要从文本数据文件生成列表,请执行以下操作。这真的很好用,但当我放入一个更大的数据文件进行转换时,我得到了这个错误:

代码语言:javascript
复制
  File "/home/.local/lib/python2.7/site-packages/numpy/lib/npyio.py", line 2047, in genfromtxt
    for (i, conv) in enumerate(converters)]))
MemoryError

对于genfromtxt来说是不是太大了?我怎么才能修复它?

提前感谢您,问候们:)

EN

回答 1

Stack Overflow用户

发布于 2018-11-05 06:47:19

正如注释中所讨论的,结果对象可能对于您的内存来说太大了。

Numpy有能力在你的磁盘上存储数组(希望是SSD,如果你使用硬盘,这可能会太慢)。这称为memmap

在内存映射中存储字符串等数据类型是可能的,但这可能会变得很棘手:numpy.memmap for an array of strings?

而且,首先将数据放到memmap中可能会很复杂。您可能希望拆分文件,并在多个to中加载。然后,您可以将各个部分逐个写入memmap中。

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

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

代码语言:javascript
复制
np.ones((10,10), dtype="float64").nbytes # 800
np.ones((10,10), dtype="int32").nbytes # 400
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53146153

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档