APL:如何从矩阵中删除仅包含0的行和列?

时间:2013-07-13 04:06:18

标签: matrix binary apl

在矩阵中

0 1 0 0
1 0 1 0
1 1 0 0
0 0 0 0

我想通过将第4列和第4行剥离到

来重塑它
0 1 0
1 0 1
1 1 0

这样做的明智之处是什么?

1 个答案:

答案 0 :(得分:4)

给出如下的矩阵:

A←0 1 1 0 1⍀1 0 0 1 1\3 3⍴⍳9

这是:

0 0 0 0 0
1 0 0 2 3
4 0 0 5 6
0 0 0 0 0
7 0 0 8 9  

可以使用以下方法删除空行和列:

(0∨.≠B)/B←(A∨.≠0)⌿A

输出:

1 2 3
4 5 6
7 8 9

仅修剪外部:

修剪前导和尾随列:

(∨\0∨.≠B)/B←(⌽∨\⌽0∨.≠A)/A

修剪前导和尾随行:

(-2↑+/^\⌽B^.=0)↓B←(∨\A∨.≠0)⌿A

所有在一起:

(-2↑+/^\⌽D^.=0)↓D←(∨\C∨.≠0)⌿C←(∨\0∨.≠B)/B←(⌽∨\⌽0∨.≠A)/A