Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将numpy int数组转换为布尔数组_Python_Arrays_Numpy - Fatal编程技术网

Python 将numpy int数组转换为布尔数组

Python 将numpy int数组转换为布尔数组,python,arrays,numpy,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] 与您所寻找的非常接近: >>> nump

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

当我想要创建一个位图时,问题就出现了,这个位图需要一个0和1的数组,就像前面的例子一样

在numpy中有没有快速的方法来转换这个?我可以给你一个循环,但可能有更好的方法

例如:

[01011100b, 0x0] -> [0, 1, 0, 1, 1, 1, 0 ,0, 0,0,0,0,0,0,0,0]
与您所寻找的非常接近:

>>> 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)

请注意,如果
len(x)
不是8的倍数,则
numpy.unpackbits(x))
的长度不会与
x
的长度相同;结尾将用零填充。

我不确定如何存储
01011100b
。你能得到字符串表示法吗?如果是这样,
list()
将字符串转换为其字符列表。这有用吗?它是一个int32,我用二进制写的,以清楚地显示我的想法。您的解决方案可能与
hsplit
一起工作。不知道是否有更好的方法不使用字符串如果您不使用字符串路径,您将不得不手动执行每个位置,类似这样的操作(尽管使用0b10000000等,而不是0x…):似乎相关。@user2357112我认为解压位将解决我的问题,您可以将其添加为答案,我会接受这一点