从二维数据索引和创建3D python数据
我有一个对称的数据表,大约有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, :, :]