nbytes和getsizeof返回不同的值

时间:2016-02-16 00:59:55

标签: python numpy memory

我注意到nbytesgetsizeof在银行到NumPy数组时会返回两个不同的值。

示例:

import sys
import numpy as np
x = np.random.rand(10000, 50)
print('x.nbytes: {0} bytes'.format(x.nbytes))
print('sys.getsizeof(x): {0} bytes'.format(sys.getsizeof(x)))

输出:

x.nbytes: 4000000 bytes
sys.getsizeof(x): 4000112 bytes

为什么?

1 个答案:

答案 0 :(得分:3)

这是因为nbytes仅返回存储数据的大小,而sys.getsizeof返回整个对象的大小,即存储数据的大小加上一些开销。 numpy数组的开销很小,因为它们必须存储数组维度,数据类型和类似信息。