【发布时间】:2017-02-10 17:16:34
【问题描述】:
我必须处理一个大数据(300 x 4 x 1400000 整数数组),它大约是
4byte * 300 * 4 * 1400000 = 6.72GB
但是,这个数组只包含 0 或 1。所以如果我可以使用布尔数组,那么大小将缩小到原始数据的 6.25%。
6.72GB / 4bytes / 8bits/bytes * 2 = 420Mbits
有没有办法在 numpy 中使用布尔数组?
编辑: 我不知道他为什么删除了他的答案,但这正是我想要的。
arr = np.ones((300,2,1400000), dtype = np.bool)
这会导致 12.5% 的压缩。
>>> arr = np.ones((300,2,1400000), dtype = np.bool)
>>> arr.nbytes
840000000
>>> arr = np.ones((300,2,1400000))
>>> arr.nbytes
6720000000
840000000/6720000000 = 12.5%
【问题讨论】:
-
"这个数组只包含 0 或 1 ......每个元素有 2 位" - 呃,什么?如何用 2 位来表示?
标签: python arrays numpy optimization bigdata