转置由文件表示的 3D 张量

转置由文件表示的 3D 张量

我有一个维度MxNxD数据对象的 3D 张量。并且这个数据对象被分解并存储在不同的文件中。

最初,每个维度MxN(前两个维度)的切片/矩阵都保存在单独的文件中。每一行包含矩阵的一行。行中的元素由空格分隔。所以总共有D这样的文件。

现在,我想转置 3D 张量,以便最后 2 个维度位于同一文件中。例如,我想要M每个文件都包含一个 NxD切片。

例子

文件0:

000 010 020 030
100 110 120 130
200 210 220 230

文件1:

001 011 021 031
101 111 121 131
201 211 221 231

应该转置为

输出1:

000 010 020 030
001 011 021 031

输出2:

100 110 120 130
101 111 121 131

输出3:

200 210 220 230
201 211 221 231

我的问题是:

  • 如何在 shell 脚本或 Python 中有效地完成此操作
  • 有没有有效的文件格式可以做到这一点?

答案1

解决方案在TXR口齿不清:

(let* ((data [mapcar file-get-lines (glob "file*")]))
  (mapdo (op file-put-lines `out@2` @1) (transpose data) (range 1)))

跑步:

$ ls
file0  file1  trans.tl
$ txr trans.tl
$ ls
file0  file1  out1  out2  out3  trans.tl
$ cat out1
000 010 020 030
001 011 021 031
$ cat out2
100 110 120 130
101 111 121 131
$ cat out3
200 210 220 230
201 211 221 231

相关内容