import numpy as np
import sys
a = np.array([[11, 12, 13, 14, 15],
[16, 17, 18, 19, 20],
[21, 22, 23, 24, 25],
[26, 27, 28 ,29, 30],
[31, 32, 33, 34, 35]],dtype=np.int64)
print(a.nbytes)
print(sys.getsizeof(a))
print(sys.getsizeof(np.array([[]],dtype=np.int64)))
200 #只是存储数据所占的字节
256 #存储数据和二维数组所占字节
56 #空二维数组所占字节
numpy的nbytes方法和sys.getsizeof函数区别
1、数组的数据类型是int 64,一个int 64中有64位,一个字节中有8位,所以一个int 64就是8字节,8×5×5=200 所以所有数据消耗200字节。
2、sys.getsizeof(a)方法得到的是a占用的内存大小,因为数组是可变类型的数据,系统给数组分配的比200字节要大一些。
总结:
nbytes方法计算时,确实没有计算数组的开销,数组实际占用的空间要稍大一点。