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