从二维数据索引和创建3D python数据

0 投票
1 回答
45 浏览
提问于 2025-04-12 16:32

我有一个对称的数据表,大约有400行和400列。我想把它变成一个三维的立方体,也就是通过计算三个坐标X、Y、Z之间每一对的和。

举个例子,如果立方体的坐标是A-B-C,我会从这个二维的数据表中取出以下几个单元格的和:A-B、B-C、A-C。因为这个数据表是对称的,所以无论是第一项还是第二项在行或列的位置都没关系。

这里是一个3x3的数据快照:

        #   A   B   C
df_in = [[  1,  5,  2], # A
         [  5,  1,  3], # B
         [  2,  3,  1]] # C

接下来,这将是构成输出立方体的三个平面:

          #   A   B   C
outputA = [[  3, 11,  5], # A
           [ 11, 11, 10], # B
           [  5, 10,  5]] # C
          #   A   B   C
outputB = [[ 11, 11, 10], # A
           [ 11,  3,  7], # B
           [ 10,  7,  7]] # C
          #   A   B   C
outputC = [[  5, 10,  5], # A
           [ 10,  7,  7], # B
           [  5,  7,  3]] # C

最后,这个立方体就是这三个数组沿着Z轴叠加在一起的结果。考虑到数据的大小,我显然想避免使用循环,但我现在想不出高效的方法,甚至是一些不那么慢的方式来完成这个任务。

1 个回答

0

找到了一个相对简单的一行代码解决方案:

cube_data = df_in.values[:, :, None] + df_in.values[:, None, :] + df_in.values[None, :, :]

撰写回答