将numpy int数组转换为boolean数组

时间:2015-06-03 05:29:43

标签: python arrays numpy

我有一个数组可以映射生命游戏中的细胞。到目前为止,每个单元格都有一个int。为了最小化读取量,我想将数组压缩为每1个整数8个单元格。

当我想创建一个位图时会出现问题,该位图需要一个0和1的数组,就像前一种情况一样。

是否有任何快速方式在numpy转换它?我可以为你做一个循环,但可能有更好的方法。

示例:

[01011100b, 0x0] -> [0, 1, 0, 1, 1, 1, 0 ,0, 0,0,0,0,0,0,0,0]

1 个答案:

答案 0 :(得分:2)

numpy.packbitsnumpy.unpackbits非常接近您所寻找的内容:

>>> numpy.packbits([1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1])
array([225, 184], dtype=uint8)
>>> numpy.unpackbits(array([225, 184], dtype=numpy.uint8))
array([1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0], dtype=uint8)

请注意,如果numpy.unpackbits(numpy.packbits(x))不是8的倍数,则xlen(x)的长度不同;最后将用零填充。