我有一个维度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