Python 使用二进制数组选择矩阵的行
假设我有一个格式为(m x n)的矩阵和一个维数为(m)的包含布尔值的数组。我只想选择并提取矩阵中m维数组的对应索引包含真值的行。必须有一个非常简单的方法来解决这个问题,我不知道 可能有助于更好地解释以下内容的最小可重复示例: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
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]])
查找有关布尔索引的详细信息