减少前端编码的包含numpython dict的numpy数组的大小

减少前端编码的包含numpython dict的numpy数组的大小,python,python-3.x,numpy,python-3.6,python-3.5,Python,Python 3.x,Numpy,Python 3.6,Python 3.5,我有一个python字典,其中包含大小为(2,99,5)的NumPy数组作为其值,因此dict如下所示: { “key1”:大numpy数组, “key2”:大numpy数组, “key3”:大numpy数组, } 我正试着把这篇短文发到前端 首先,我使用tolist方法将所有这些NumPy数组转换为python列表,然后使用JSON转储dict JSON文件的大小为349kb。我想知道对字典进行编码的最佳方法是什么,以减少编码速度仍然很快的结果文件的大小 我想到了压缩JSON。压缩这样一个文

我有一个python字典,其中包含大小为(2,99,5)的NumPy数组作为其值,因此dict如下所示:

{
“key1”:大numpy数组,
“key2”:大numpy数组,
“key3”:大numpy数组,
}
我正试着把这篇短文发到前端

首先,我使用
tolist
方法将所有这些NumPy数组转换为python列表,然后使用JSON转储dict

JSON文件的大小为349kb。我想知道对字典进行编码的最佳方法是什么,以减少编码速度仍然很快的结果文件的大小

我想到了压缩JSON。压缩这样一个文件的最佳方式是什么


提前谢谢。

Json不会压缩文件。它格式化了结构。文件大小可能会以这种方式增加

您可以使用gzip.compress()


您可以在这里看到,Json将开销放在gzip压缩的地方。

Json不会压缩文件。它格式化了结构。文件大小可能会以这种方式增加

您可以使用gzip.compress()

您可以在这里看到,Json在gzip压缩的地方增加了开销。

gzip在RAM和CPU开销方面非常轻。而gzip在RAM和CPU开销方面非常轻。
In [1]: from sys import getsizeof                                                                                                                     

In [2]: import numpy as np                                                                                                                            

In [3]: a = np.random.randn(100,20)                                                                                                                   

In [4]: import gzip                                                                                                                                   

In [5]: az = gzip.compress(a)                                                                                                                         

In [6]: getsizeof(a)                                                                                                                                  
Out[6]: 16112

In [7]: getsizeof(az)                                                                                                                                 
Out[7]: 15415

In [8]: import json

In [10]: aj = json.dumps(a.tolist())                                                                                                                  

In [11]: getsizeof(aj)                                                                                                                                
Out[11]: 41532