使用n ^ 2位空间的2d布尔数组

时间:2013-11-28 17:38:09

标签: python numpy

我需要一个2 n n乘n布尔数组,尽可能使用接近n ^ 2位的内存。我需要的操作是能够快速设置和读取由(x,y)坐标索引的各个位。在python和/或numpy中有一个很好的方法吗?

1 个答案:

答案 0 :(得分:2)

如果你想要一个有numpy的DIY解决方案,以下可能是一个起点:

a = np.zeros((n, (n-1)//8+1), dtype=np.uint8)
# to set to zero
a[x, y//8] &= 255 - (1 << (y%8))
# to set to one
a[x, y//8] |= (1 << (y%8))
#to read
(a[x, y//8] >> (y % 8)) & 1