在使用NumPy时,对于因数组过大而导致的内存问题,一个基本的减少内存占用的方法即压缩。通过改变数据的展示方式,通常在无需更改大量代码的情况下,即可达到减少内存占用的目的。
本文将介绍如下内容:
通过更小的数据类型(dtype)减少内存占用
稀疏矩阵
上述解决方案不适用的场景
使用更小的数据类型
在NumPy中创建数组时,会为其指定一个数据类型。此类型可能是uint8(无符号8位整数)或float64(64位浮点数)等等。
不同的数据类型所表示的数值范围有所不同:
16位uint的范围是0-65535
64位uint的范围是0-18446744073709551615
它们的内存使用程度也各不相同;64位整数需要的内存空间是16位整数的4倍。
这就给予我们减少内存占用的机会:如果数据是一个0~60k的整数,那么使用32位或64位的整数是没有意义的,可以使用16位整数进行内存空间优化。