列表和numpy数组之间的比较

时间:2018-09-10 15:29:44

标签: python python-3.x numpy numpy-ndarray

好吧,我是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数组占用的空间比列表对象大?

1 个答案:

答案 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

  

不包括数组对象的非元素属性消耗的内存。