为什么酸洗numpy数组会有很大的开销?

时间:2015-07-08 21:20:44

标签: python numpy pickle

假设我在Python中有一个简单的数组:

>>> x = [1.0, 2.0, 3.0, 4.0]

当腌制时,它的尺寸相当小:

>>> pickle.dumps(x).__len__()
44

为什么我使用numpy数组,尺寸要大得多?

>>> xn = np.array(x)
>>> pickle.dumps(xn).__len__()
187

将其转换为不太精确的数据类型只会有所帮助...

>>> x16 = xn.astype('float16')
>>> pickle.dumps(x16).__len__()
163

其他numpy / scipy数据结构(如稀疏矩阵)也不会很好。为什么呢?

1 个答案:

答案 0 :(得分:1)

在调试器中检查它,numpy数组除了数据之外还有max,min,type等字段,我不确定python列表是什么。

可在http://docs.scipy.org/doc/numpy/reference/arrays.ndarray.html

上找到完整列表

由于酸洗只是二进制复制,这些其他字段也会被复制,从而导致更大的尺寸。