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

Matrix APL:如何从矩阵中删除只包含0的行和列?,matrix,binary,apl,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 做这件事的明智方法是什么?给定一个矩阵,例如: 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 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

做这件事的明智方法是什么?

给定一个矩阵,例如:

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

给定一个矩阵,例如:

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

有没有办法改进这一点,只删除0的外部行和列?例如,如果有一个3 x 3的1矩阵,中间一行是0,它不会删除这一行?定义一个“归约向量”作为一个单独的变量(为了可读性),然后执行(∧\var)∨⌽∧\var,仅删除起始或结束处的连续段。缩减向量是什么意思?你说的“it”是指矩阵吗?有没有办法改进它,只删除0的外部行和列?例如,如果有一个3 x 3的1矩阵,中间一行是0,它不会删除这一行?定义一个“归约向量”作为一个单独的变量(为了可读性),然后执行(∧\var)∨⌽∧\var,仅删除起始或结束处的连续段。缩减向量是什么意思?“它”是指矩阵吗?