Python:按列值分隔矩阵

Python:按列值分隔矩阵,python,numpy,matrix,split,Python,Numpy,Matrix,Split,我有一个矩阵a,有3列,看起来像,但大得多: [[10 15 1.0] [21 13 1.0] [9 14 0.0] [14 24 1.0] [21 31 0.0] ...] 我想创建两个单独的矩阵:一个包含第三列=0.0的所有数据,另一个包含第三列=1.0的所有数据。因此,本质上是将数据按第三列中的值0.0或1.0进行拆分。下面是我们使用列表理解来分隔矩阵的方法,无需导入其他库。首先,包含第三列所有数据的矩阵是0.0: [x for x in matrix if x[2] ==

我有一个矩阵
a
,有3列,看起来像,但大得多:

[[10 15 1.0]
 [21 13 1.0]
 [9  14 0.0]
 [14 24 1.0]
 [21 31 0.0]
 ...]

我想创建两个单独的矩阵:一个包含第三列=0.0的所有数据,另一个包含第三列=1.0的所有数据。因此,本质上是将数据按第三列中的值0.0或1.0进行拆分。

下面是我们使用列表理解来分隔矩阵的方法,无需导入其他库。首先,包含第三列所有数据的矩阵是
0.0

[x for x in matrix if x[2] == 0.0]
[x for x in matrix if x[2] == 1.0]
以及另一个矩阵,其中包含与第三列为
1.0
时相关的所有数据:

[x for x in matrix if x[2] == 0.0]
[x for x in matrix if x[2] == 1.0]
例如:

matrix = [[10, 15, 1.0],
          [21, 13, 1.0],
          [ 9, 14, 0.0],
          [14, 24, 1.0],
          [21, 31, 0.0]]

[x for x in matrix if x[2] == 0.0]
=> [[ 9, 14, 0.0],
    [21, 31, 0.0]]

[x for x in matrix if x[2] == 1.0]
=> [[10, 15, 1.0],
    [21, 13, 1.0],
    [14, 24, 1.0]]
如果使用,请首先查找第三列具有所需值的行,然后使用提取行

演示

>>> import numpy
>>> A = numpy.array([[1, 0, 1],
                     [2, 0, 1],
                     [3, 0, 0],
                     [4, 0, 0],
                     [5, 0, 0]])
>>> A1 = A[A[:, 2] == 1, :] # extract all rows with the third column 1
>>> A0 = A[A[:, 2] == 0, :] # extract all rows with the third column 0
>>> A0
array([[3, 0, 0],
       [4, 0, 0],
       [5, 0, 0]])
>>> A1
array([[1, 0, 1],
       [2, 0, 1]])