好吧,我是python的新手,最近我从numpy介绍开始。从numpy和list之间的比较开始,numpy占用较少的内存存储空间。但是在IDLE shell中尝试了之后,我感到困惑。这就是我所做的
list1=[1,2,3]
sys.getsizeof(list1)
48
a=np.array([1,2,3])
sys.getsizeof(a)
60
为什么创建的numpy数组占用的空间比列表对象大?
答案 0 :(得分:3)
首先,getsizeof
并非总是比较这两个对象大小的最佳方法。 From the docs:
仅考虑直接归因于对象的内存消耗,而不考虑其引用的对象的内存消耗。
但是,要回答您的问题,您在这里看到的只是numpy
数组的额外开销,这将在如此小的输入样本上提供偏斜的结果。
如果您想知道包含在numpy
数组中的数据的大小,可以检查以下属性:
>>> a = np.array([1,2,3])
>>> a.nbytes
12
>>> a = np.array([1,2,3], dtype=np.int8)
>>> a.nbytes
3
This will not include the overhead:
不包括数组对象的非元素属性消耗的内存。