如何通过numpy实现数据大小的减少

时间:2017-09-28 01:58:39

标签: python-2.7 numpy

我的以下代码生成类似矩阵,其中包含二进制表示形式的值:

import sys
import random

Arr = list(set([random.randint(0, 2 ** 8) for i in range(10)]))
Arr = [('{0:08b}').format(i) for i in Arr]
Arr = np.asarray([list(map(int, list(i))) for i in Arr])
print Arr
print "dtype= %d , size of Arr is (%d) bytes \n" % (Arr.itemsize, sys.getsizeof(Arr))

结果是:

dtype= 8 , size of Arr is (752) bytes

正如您所看到的,似乎Numpy为每个二进制数字选取了8字节,其总大小为Arr = 752 bytes。但是,我的代码应生成范围为random.randint(0, 2 ** 128)的1000万个值的矩阵。为了减少总尺寸,我的一位朋友建议我使用dtype=np.int8作为np.asarray([list(map(int, list(i))) for i in Arr], dtype=np.int8)。应用后,结果变为:

dtype= 1 , size of Arr is (192) bytes

752192字节的巨大缩减。由于我们两个都是Python编程的新手,这是缩小尺寸的正确方法吗?

谢谢

0 个答案:

没有答案