在numpy中减少稀疏矩阵
似乎我在这里遗漏了一些非常基本的东西。 我有一个很大的方阵,大部分是零。我想要的是将其简化为一个矩阵,该矩阵包含具有非零项的所有行和列。 例如:在numpy中减少稀疏矩阵,numpy,matrix,sparse-matrix,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 有没有快速的方法可以做到这一点?像这样的方法怎么样: >>> arr array([[ 1., 1., 0., 1.], [ 1., 1., 0., 1.], [ 0., 0.,
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
有没有快速的方法可以做到这一点?像这样的方法怎么样:
>>> 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.]])
有一些非零和一些零条目的行/列呢?保留它们?是的,如果有任何非零元素,则应保留它们。我在考虑按顺序在不同的轴上切片。首先是全零的行,然后是全零的列。这正是我所需要的。不过有两个问题。首先,为什么
mask=(arr!=0)
不起作用(使用np.all
vs~np.all
)。其次,神秘的~
是关于什么的?@Manbroski~
是指向位NOT运算符的快捷方式,请参见。我会玩np.所有的
和不同的掩码,看看我为什么按原样写这个操作,我不确定我能把它简明扼要地用文字表达出来。搜索特殊字符有点困难,这就是为什么我对它的用法的语义感到困惑。非常感谢。