Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.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中的优化环境_Python_Arrays_Matplotlib_Optimization_Multidimensional Array - Fatal编程技术网

创建一个;方框“;python中的优化环境

创建一个;方框“;python中的优化环境,python,arrays,matplotlib,optimization,multidimensional-array,Python,Arrays,Matplotlib,Optimization,Multidimensional Array,我目前正在从事一个与空间优化相关的项目 该项目基本上是在一个框中安排一组对象,以使用最少的空间。我有物体的尺寸、表面积、体积、形状等(单位最初以米为单位) 现在的问题是,我需要创建一个三维长方体容器来容纳一定数量的对象,在这里我可以跟踪坐标,如果它们是否由对象填充。假设“对象1”填充框的角,使其填充坐标[0,0,0]到[150150] 请注意,我将米转换为毫米,所以当我将它们放在3D阵列中时,我可以忽略尺寸的小数点(将误差降至最低)。我试着用一个三维数组来表示长方体,但当它的尺寸太大时会出现问题

我目前正在从事一个与空间优化相关的项目

该项目基本上是在一个框中安排一组对象,以使用最少的空间。我有物体的尺寸、表面积、体积、形状等(单位最初以米为单位)

现在的问题是,我需要创建一个三维长方体容器来容纳一定数量的对象,在这里我可以跟踪坐标,如果它们是否由对象填充。假设“对象1”填充框的角,使其填充坐标[0,0,0]到[150150]

请注意,我将米转换为毫米,所以当我将它们放在3D阵列中时,我可以忽略尺寸的小数点(将误差降至最低)。我试着用一个三维数组来表示长方体,但当它的尺寸太大时会出现问题。因此,1x1x1米的盒子相当于1000 x 1000 x 1000毫米,这会导致内存错误

在创建我的算法可以在python中操作的“盒子”环境时,是否有其他选择


我尝试了matplotlib的pyplot 3d,但我无法跟踪坐标并为绘图指定特定的长度、宽度和高度,因为它实际上是用于绘制数据,而不是存储数据。

因此我从@f5r5e5d获得了这个想法,在创建numpy 3d数组时,我指定了数据类型

由于我需要一个包含至少1000 x 1000 x 1000个单元格的长方体,并且假设一个长方体可以容纳平均100-150个对象,因此我将只存储0到150之间的无符号int

因此,在创建阵列时,我可以

box = np.zeros((1750,1750,1750), dtype = 'u1')
其中,u1是8位无符号整数


当我超过1750时,给出内存错误,但对于一个包含10亿或更多元素的盒子,它工作得非常完美

您可以使用二进制数据类型将打开/填充的数据更紧凑地编码为单个位,例如长方体或圆(球体)。我们可以写入无重叠约束。matplotlib内不应存在任何内存错误,因为只需将单位乘以1000即可。但是我认为问题本身还不清楚。@f5r5e5d关于二进制数据类型的问题是我无法跟踪哪个对象填充了特定的坐标范围。也许是一个角色?但是我相信python没有角色datatype@ImportanceOfBeingErnest是的,matplotlib中没有错误。错误是使用numpy的3d阵列。matplotlib的问题是我无法区分是什么对象填充了绘图中的特定点/空间。