2024-10-02 08:26:26 发布
网友
我用
netdata = num.genfromtxt('resultscut.rw', dtype=None, delimiter = '|', usecols=(0,1,2,3,4))
从文本数据文件生成列表。这很好用,但是当我把一个更大的数据文件转换时,我得到了一个错误:
对genfromtxt来说太大了吗?我怎样才能修好它?在
提前谢谢你, 问候语:)
正如注释中所讨论的,结果对象对于您的内存来说可能太大了。在
Numpy能够在磁盘上存储阵列(希望是SSD,如果使用HDD,这可能太慢了)。 这称为memmap。在
可以在memmap中存储字符串之类的数据类型,但这可能会变得棘手:numpy.memmap for an array of strings?
而且,首先将数据放入memmap可能会很复杂。您可能需要拆分文件并分多次加载。然后您可以将各个部分逐个写入memmap。在
另一个重要的点可能是dtype。指定None并使用许多列。在不同的列中有不同的数据类型吗?如果是,您可能希望切换到pandas,而不是numpy。这将为类似电子表格的数据提供适当的数据类型。 确保为每个列使用适当的数据类型。这可以显著减少内存占用(并且可能已经解决了您的问题):https://www.dataquest.io/blog/pandas-big-data/
dtype
None
要检查numpy数组的内存占用,可以使用nbytes:
nbytes
np.ones((10,10), dtype="float64").nbytes # 800 np.ones((10,10), dtype="int32").nbytes # 400
正如注释中所讨论的,结果对象对于您的内存来说可能太大了。在
Numpy能够在磁盘上存储阵列(希望是SSD,如果使用HDD,这可能太慢了)。 这称为memmap。在
可以在memmap中存储字符串之类的数据类型,但这可能会变得棘手:numpy.memmap for an array of strings?
而且,首先将数据放入memmap可能会很复杂。您可能需要拆分文件并分多次加载。然后您可以将各个部分逐个写入memmap。在
另一个重要的点可能是
dtype
。指定None
并使用许多列。在不同的列中有不同的数据类型吗?如果是,您可能希望切换到pandas,而不是numpy。这将为类似电子表格的数据提供适当的数据类型。 确保为每个列使用适当的数据类型。这可以显著减少内存占用(并且可能已经解决了您的问题):https://www.dataquest.io/blog/pandas-big-data/要检查numpy数组的内存占用,可以使用
nbytes
:相关问题 更多 >
编程相关推荐