Python 如何定义具有最低内存消耗的矩阵?

Python 如何定义具有最低内存消耗的矩阵?,python,numpy,matrix,sparse-matrix,numpy-ndarray,Python,Numpy,Matrix,Sparse Matrix,Numpy Ndarray,我想在10000000*256维的矩阵中添加10000000个整数。我定义了三种类型的矩阵,以比较哪种定义的内存消耗最低,如下所示: 1) np.zeros ([row, col], dtype = int) 2) np.empty ([row, col], dtype = int) 3) csr_matrix ((row, col), dtype = np.int) .toarray () 在这些定义中,定义为Spar的矩阵具有最少的内存量。前两个定义各自有2GB内存使用,但最后一个矩阵消耗

我想在10000000*256维的矩阵中添加10000000个整数。我定义了三种类型的矩阵,以比较哪种定义的内存消耗最低,如下所示:

1) np.zeros ([row, col], dtype = int)
2) np.empty ([row, col], dtype = int)
3) csr_matrix ((row, col), dtype = np.int) .toarray ()

在这些定义中,定义为Spar的矩阵具有最少的内存量。前两个定义各自有2GB内存使用,但最后一个矩阵消耗1GB内存。是否有其他方法或库尽可能地压缩矩阵并消耗更少的内存?

具有形状(行、列)和类型
int
的numpy数组使用相同的内存,无论您如何构造它。您可以查看
n字节
或计算
行*col*8
(数据类型int为8字节)。没有任何非零值的稀疏矩阵非常小,但转换为稠密矩阵时不会节省任何内存:
toarray()
。数组的内存由形状和数据类型固定。值,无论是0或255或其他值都不会改变这一点。如果值介于0和255之间,则应将数据类型设为np.uint8。如果每个阵列条目需要1个字节的存储空间,则这将只需要1个字节。