过滤列上的numpy矩阵

Mua*_*tik 3 python numpy matrix

我有一个numpy矩阵如下:

data = np.matrix(
      "5 3 1;"
      "4 4 1;"
      "6 4 1;"
      "8 2 1;"
      "3 5 1;"
      "1 7 1;"
      "5 4 1;"
      "0 1 0;"
      "2 0 0")
# Output:
matrix([[5, 3, 1],
    [4, 4, 1],
    [6, 4, 1],
    [8, 2, 1],
    [3, 5, 1],
    [1, 7, 1],
    [5, 4, 1],
    [0, 1, 0],
    [2, 0, 0]])
Run Code Online (Sandbox Code Playgroud)

我想要的是过滤第三列的矩阵,其值为1; 也就是说,我不想得到第3个值为0的行.总之,我想提取下面的矩阵:

matrix([[5, 3, 1],
    [4, 4, 1],
    [6, 4, 1],
    [8, 2, 1],
    [3, 5, 1],
    [1, 7, 1],
    [5, 4, 1]])
Run Code Online (Sandbox Code Playgroud)

我尝试了几种组合来过滤它; 但他们都没有为我工作.例如,以下代码排除了零行,但它只返回第一列.

data[data[:,2]>0]
#Output: 
matrix([[5, 4, 6, 8, 3, 1, 5]])
Run Code Online (Sandbox Code Playgroud)

有没有办法过滤这个矩阵而不显式编写循环语句?

Sau*_*tro 8

使用np.array而不是np.matrix允许你做一个简单的掩码索引,如:

a = a[a[:, 2] != 0]
Run Code Online (Sandbox Code Playgroud)

转换np.matrixnp.array你可以做:

a = np.asarray(a)    
Run Code Online (Sandbox Code Playgroud)

  • [`a = aA`](http://docs.scipy.org/doc/numpy/reference/generated/numpy.matrix.A.html#numpy.matrix.A)相当于`a = np.asarray (a)`对于矩阵.:) (3认同)