APL - 移除嵌套并保持矩阵的形状
APL - Remove nesting and keep shape of matrix
我有一个由 3x3 嵌套矩阵(都包含数字)组成的 3x3 矩阵。我如何 "de nest" 所有这些矩阵,以便我最终得到一个 9x9 矩阵。
假设这是我们的矩阵 m:
⎕←m←(3 3⍴⊂3 3⍴⍳9)ר(1 10 100)∘.×1 10 100
┌───────────┬──────────────┬─────────────────┐
│1 2 3 │10 20 30 │100 200 300 │
│4 5 6 │40 50 60 │400 500 600 │
│7 8 9 │70 80 90 │700 800 900 │
├───────────┼──────────────┼─────────────────┤
│10 20 30 │100 200 300 │1000 2000 3000 │
│40 50 60 │400 500 600 │4000 5000 6000 │
│70 80 90 │700 800 900 │7000 8000 9000 │
├───────────┼──────────────┼─────────────────┤
│100 200 300│1000 2000 3000│10000 20000 30000│
│400 500 600│4000 5000 6000│40000 50000 60000│
│700 800 900│7000 8000 9000│70000 80000 90000│
└───────────┴──────────────┴─────────────────┘
那么可以这样变换:
⊃⍪/,/m
1 2 3 10 20 30 100 200 300
4 5 6 40 50 60 400 500 600
7 8 9 70 80 90 700 800 900
10 20 30 100 200 300 1000 2000 3000
40 50 60 400 500 600 4000 5000 6000
70 80 90 700 800 900 7000 8000 9000
100 200 300 1000 2000 3000 10000 20000 30000
400 500 600 4000 5000 6000 40000 50000 60000
700 800 900 7000 8000 9000 70000 80000 90000
基本上,这会将各列按行粘合在一起,然后逐行粘合 - 最后公开生成的垫子。
我有一个由 3x3 嵌套矩阵(都包含数字)组成的 3x3 矩阵。我如何 "de nest" 所有这些矩阵,以便我最终得到一个 9x9 矩阵。
假设这是我们的矩阵 m:
⎕←m←(3 3⍴⊂3 3⍴⍳9)ר(1 10 100)∘.×1 10 100
┌───────────┬──────────────┬─────────────────┐
│1 2 3 │10 20 30 │100 200 300 │
│4 5 6 │40 50 60 │400 500 600 │
│7 8 9 │70 80 90 │700 800 900 │
├───────────┼──────────────┼─────────────────┤
│10 20 30 │100 200 300 │1000 2000 3000 │
│40 50 60 │400 500 600 │4000 5000 6000 │
│70 80 90 │700 800 900 │7000 8000 9000 │
├───────────┼──────────────┼─────────────────┤
│100 200 300│1000 2000 3000│10000 20000 30000│
│400 500 600│4000 5000 6000│40000 50000 60000│
│700 800 900│7000 8000 9000│70000 80000 90000│
└───────────┴──────────────┴─────────────────┘
那么可以这样变换:
⊃⍪/,/m
1 2 3 10 20 30 100 200 300
4 5 6 40 50 60 400 500 600
7 8 9 70 80 90 700 800 900
10 20 30 100 200 300 1000 2000 3000
40 50 60 400 500 600 4000 5000 6000
70 80 90 700 800 900 7000 8000 9000
100 200 300 1000 2000 3000 10000 20000 30000
400 500 600 4000 5000 6000 40000 50000 60000
700 800 900 7000 8000 9000 70000 80000 90000
基本上,这会将各列按行粘合在一起,然后逐行粘合 - 最后公开生成的垫子。