Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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中创建布尔数组_Python_Arrays_Numpy_Optimization_Bigdata - Fatal编程技术网

Python 如何在numpy中创建布尔数组

Python 如何在numpy中创建布尔数组,python,arrays,numpy,optimization,bigdata,Python,Arrays,Numpy,Optimization,Bigdata,我必须处理一个大数据300×4×1400000的整数数组,大约 4byte * 300 * 4 * 1400000 = 6.72GB 但是,此数组仅包含0或1。因此,如果我可以使用布尔数组,那么大小将缩小到原始数据的6.25% 6.72GB / 4bytes / 8bits/bytes * 2 = 420Mbits 有没有办法在numpy中使用布尔数组 编辑: 我不知道他为什么删除了他的答案,但这正是我想要的 arr = np.ones((300,2,1400000), dtype = n

我必须处理一个大数据300×4×1400000的整数数组,大约

4byte * 300 * 4 * 1400000 = 6.72GB

但是,此数组仅包含0或1。因此,如果我可以使用布尔数组,那么大小将缩小到原始数据的6.25%

6.72GB / 4bytes / 8bits/bytes * 2 = 420Mbits 
有没有办法在numpy中使用布尔数组

编辑: 我不知道他为什么删除了他的答案,但这正是我想要的

arr = np.ones((300,2,1400000), dtype = np.bool)
这将导致12.5%的压缩

>>> arr = np.ones((300,2,1400000), dtype = np.bool)
>>> arr.nbytes
840000000

>>> arr = np.ones((300,2,1400000))
>>> arr.nbytes
6720000000

840000000/6720000000 = 12.5%

这将使您减少75%,从每项4字节减少到每项1字节

bool_array = np.logical_and(int_array, True)

虽然有一种方法可以操作这些文件中的“位字段”,但它们并不能在位级别上提供适当的numpy数组的便利


这就是说,numpy确实有逻辑或布尔数组,即带有dtype bool的数组。它们每个元素只占用一个字节,是正确的数组。当您的数组是通过逻辑数组操作创建的,例如,b=a>0,它将自动成为布尔类型。您可以通过标准的numpy方式获得布尔数组a.astypebool、array…、dtype=bool等。

此数组仅包含0或1。。。每个元素有2个位-嗯,什么?如何用2位来表示呢?谢谢。我使用h5py从.mat数据文件加载数组。看起来,即使数据只包含0和1,我也得到了整数数组。因此,我将使用dtype=np.bool参数将其转换为bool数组。@takataka我认为hdf5使用或能够使用压缩,这将大大减少浪费。不知道matlab-hdf5到底做了什么。不管怎样,我觉得你的计划不错。