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