假设我在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数据结构(如稀疏矩阵)也不会很好。为什么呢?
答案 0 :(得分:1)
在调试器中检查它,numpy数组除了数据之外还有max,min,type等字段,我不确定python列表是什么。
可在http://docs.scipy.org/doc/numpy/reference/arrays.ndarray.html
上找到完整列表由于酸洗只是二进制复制,这些其他字段也会被复制,从而导致更大的尺寸。