Python 使用二进制数组选择矩阵的行

Python 使用二进制数组选择矩阵的行,python,numpy,Python,Numpy,假设我有一个格式为(m x n)的矩阵和一个维数为(m)的包含布尔值的数组。我只想选择并提取矩阵中m维数组的对应索引包含真值的行。必须有一个非常简单的方法来解决这个问题,我不知道 可能有助于更好地解释以下内容的最小可重复示例: A = np.array([[ 1, 4, 5, 12], [-5, 8, 9, 0], [-6, 7, 11, 19], [13, 15, 16, 19]]) B = np

假设我有一个格式为(m x n)的矩阵和一个维数为(m)的包含布尔值的数组。我只想选择并提取矩阵中m维数组的对应索引包含真值的行。必须有一个非常简单的方法来解决这个问题,我不知道

可能有助于更好地解释以下内容的最小可重复示例:

A = np.array([[ 1,  4,  5, 12],
              [-5,  8,  9,  0],
              [-6,  7, 11, 19],
              [13, 15, 16, 19]])

B = np.array([1,0,1,1])
预期产出:

Out[1]: 
array([[ 1,  4,  5, 12],
       [-6,  7, 11, 19],
       [13, 15, 16, 19]])

B
强制转换为布尔值,因此索引是基于布尔值的:

A[B.astype(bool)]

array([[ 1,  4,  5, 12],
       [-6,  7, 11, 19],
       [13, 15, 16, 19]])

否则,作为
B
一个整数数组,您将执行整数索引,并且只对索引指定的行进行索引:

A[B]

array([[-5,  8,  9,  0],
       [ 1,  4,  5, 12],
       [-5,  8,  9,  0],
       [-5,  8,  9,  0]])
查找有关布尔索引的详细信息