Numpy:根据其中一列从矩阵中查找

时间:2016-06-07 22:51:29

标签: python numpy

我有Xy:

matrix([[1, 1, 1, 1],
        [1, 2, 2, 2],
        [2, 3, 3, 3],
        [2, 4, 4, 4]])

如何返回第一列== 1的所有行?

答案应该是:

matrix([[1, 1, 1, 1],
        [1, 2, 2, 2]])

1 个答案:

答案 0 :(得分:2)

matrix类型通常应该避免使用numpy.array。但是,如果您觉得需要使用它,那么您可以使用numpy.compress过滤矩阵。

这样做时,压扁过滤器很重要......

>>> numpy.compress((m[:,0] == 1).flat, m, axis=0)
matrix([[1, 1, 1, 1],
        [1, 2, 2, 2]])

这里,m[:,0] == 1返回一个布尔矩阵,表明哪些行被认为是可接受的。 numpy.compress会为我们选择那些可接受的行。