确定scipy.sparse矩阵的字节大小?

37

如何确定scipy.sparse矩阵的字节大小?在NumPy中,您可以通过执行以下操作来确定数组的大小:

import numpy as np

print(np.zeros((100, 100, 100).nbytes)
8000000
1个回答

62

稀疏矩阵是由普通的numpy数组构建的,因此您可以像处理普通数组一样获取任何一个矩阵的字节大小。

如果您仅需要数组元素的字节数:

>>> from scipy.sparse import csr_matrix
>>> a = csr_matrix(np.arange(12).reshape((4,3)))
>>> a.data.nbytes
88

如果您想要构建稀疏矩阵所需的所有数组的字节计数,则我认为您需要:

>>> print a.data.nbytes + a.indptr.nbytes + a.indices.nbytes
152

很好,那个运行得非常顺利。我更感兴趣的是第一个案例,但第二个案例也很有趣。那个内存大小是否代表整个对象? - ebressert
不,只需要数组。请参考https://dev59.com/1XVD5IYBdhLWcg3wRpaX。 - user545424
6
对于coo_matrix,其大小应为a.col.nbytes + a.row.nbytes + a.data.nbytes。 - czxttkl
2
有没有一种适用于所有类型的稀疏矩阵的通用方法呢?谢谢! - Martin
我目前找到的最佳解决方案是通过pickle:https://dev59.com/questions/9HRB5IYBdhLWcg3w-789#59228005 - Martin
为了确保它适用于不同类型的稀疏矩阵:sum([sys.getsizeof(i) for i in sparse_matrix.data]) - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接