![파일이 나타내는 3D 텐서를 전치합니다.](https://linux55.com/image/108075/%ED%8C%8C%EC%9D%BC%EC%9D%B4%20%EB%82%98%ED%83%80%EB%82%B4%EB%8A%94%203D%20%ED%85%90%EC%84%9C%EB%A5%BC%20%EC%A0%84%EC%B9%98%ED%95%A9%EB%8B%88%EB%8B%A4..png)
MxNxD
차원 데이터 개체의 3D 텐서가 있습니다 . 그리고 이 데이터 개체는 분할되어 다른 파일에 저장됩니다.
처음에는 MxN
각 차원(처음 두 차원)에 대한 조각/행렬이 별도의 파일에 저장됩니다. 각 행에는 행렬의 행이 포함됩니다. 행의 요소는 공백으로 구분됩니다. 그래서 D
그러한 파일이 모두 있습니다 .
이제 마지막 2차원이 동일한 파일에 있도록 3D 텐서를 전치하고 싶습니다. 예를 들어 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
내 질문은 다음과 같습니다
- 쉘 스크립트나 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