有没有办法查看SciPy矩阵使用了多少内存?

Han*_*Sun 3 python numpy scipy

我知道在python中很难看到对象的内存使用情况.

是否更容易为SciPy对象(例如,稀疏矩阵)执行此操作?

Enr*_*eri 5

你可以使用array.itemsize(包含类型的大小,以字节为单位)和array.flat来获取长度:

# a is your array
bytes = a.itemsize * a.size
Run Code Online (Sandbox Code Playgroud)

这不是确切的价值,因为它忽略了整个阵列基础设施,但对于大阵列而言,重要的是它的价值(我猜你关心因为你有大事)

如果你想在稀疏数组上使用它,你必须修改它,因为稀疏没有itemsize属性.您必须访问dtype并从中获取itemsize:

bytes = a.dtype.itemsize * a.size
Run Code Online (Sandbox Code Playgroud)

一般来说,我认为评估python对象占用的实际内存并不容易... numpy数组是一个例外,只是C数组上的一个薄层