在numpy中减少稀疏矩阵

时间:2014-04-21 19:21:42

标签: numpy matrix sparse-matrix

似乎我在这里遗漏了一些非常基本的东西。 我有一个大的方阵,主要是零。我想要的是将它减少到包含具有非零条目的所有行和列的矩阵。 例如:

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

应该简化为:

1 1 1
1 1 1
1 1 1

有快速的方法吗?

1 个答案:

答案 0 :(得分:1)

这样的事情怎么样:

>>> arr
array([[ 1.,  1.,  0.,  1.],
       [ 1.,  1.,  0.,  1.],
       [ 0.,  0.,  0.,  0.],
       [ 1.,  1.,  0.,  1.]])

>>> mask = (arr==0)

arr = arr[~np.all(mask,axis=0)]
arr = arr[:,~np.all(mask,axis=1)]
>>> arr
array([[ 1.,  1.,  1.],
       [ 1.,  1.,  1.],
       [ 1.,  1.,  1.]])