Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/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
Arrays 在3D lower中映射元素“;三角形“;线性结构_Arrays_Algorithm_Matrix_Indexing - Fatal编程技术网

Arrays 在3D lower中映射元素“;三角形“;线性结构

Arrays 在3D lower中映射元素“;三角形“;线性结构,arrays,algorithm,matrix,indexing,Arrays,Algorithm,Matrix,Indexing,这是现有系统的三维版本 形状为(n,n,n)的三维数组M[x,y,z]应映射到仅包含x元素的平面向量。方程式的三维版本为 index := (z * (z+1) * (z+2)) / 6 + (y * (y+1))/2 + x 这是用户3386109答案的一个扩展,用于将具有形状(n,…,n)的任意维d数组映射为大小size(d,n)的向量,该向量只包含索引满足X\u 1的元素,非常感谢!你能简单地解释一下你是如何推导出6的吗?它看起来很容易扩展到任意维度。@但看起来确实可以扩展到其他维度。然

这是现有系统的三维版本


形状为
(n,n,n)
的三维数组
M[x,y,z]
应映射到仅包含x元素的平面向量。方程式的三维版本为

index := (z * (z+1) * (z+2)) / 6 + (y * (y+1))/2 + x

这是用户3386109答案的一个扩展,用于将具有形状
(n,…,n)
的任意维
d
数组映射为大小
size(d,n)
的向量,该向量只包含索引满足
X\u 1的元素,非常感谢!你能简单地解释一下你是如何推导出6的吗?它看起来很容易扩展到任意维度。@但看起来确实可以扩展到其他维度。然而,我还没有能够证明它的4D。3D的公式可以从wikipedia称之为的平方和中推导出来,这就是6的来源。为了完成3D的例子,你能给出当输入数组是
(n,n,n)
时得到的向量的长度吗?@neo我相信这将是坐标
(n,0,0)
的索引,即不在数组中的第一个坐标的索引。因此
大小:=(n*(n+1)*(n+2))/6
谢谢!我刚刚计算出4D的情况:
index:=(l*(l+1)*(l+2)*(l+3))/24+(k*(k+1)*(k+2))/6+(j*(j+1))/2+I
表示
M[I,j,k,l]
,向量的大小为
n*(n+1)*(n+2)/6*(n+3)/4
。24=6*4.