Python 在给定外部条件的情况下,如何使用numpy从另一个数组中删除/选择矩阵中的行?

Python 在给定外部条件的情况下,如何使用numpy从另一个数组中删除/选择矩阵中的行?,python,numpy,Python,Numpy,对于这个矩阵,我有一个矩阵和一个真值表数组,如下所示: matrix = np.array([[1, 2, 2], [2, 3, 4], [4, 3, 5]]) truth_table = np.array([0, 1, 0]) 目标是只保留矩阵中真值表等于1的行,在本例中仅为[[2,3,4]] 矩阵的行数与真值表的元素数相同 在任何其他语言中,我都会这样做: results = np.array([]) for i in range(truth_table.size) : if(trut

对于这个矩阵,我有一个矩阵和一个真值表数组,如下所示:

matrix = np.array([[1, 2, 2], [2, 3, 4], [4, 3, 5]])
truth_table = np.array([0, 1, 0])
目标是只保留矩阵中真值表等于1的行,在本例中仅为[[2,3,4]]

矩阵的行数与真值表的元素数相同

在任何其他语言中,我都会这样做:

results = np.array([])
for i in range(truth_table.size) :
  if(truth_table[i] == 1)
    results.append(matrix[i])
问题是矩阵可能非常庞大,而for循环在Python中没有针对这类问题进行优化,因此可能需要很长时间才能执行

我确信使用numpy有更好的方法来实现这一点,但我似乎找不到解决方案。

确保您的真值表具有dtype=bool,然后您就可以执行矩阵[truth\u table]


将真值表转换为布尔数组,然后将索引转换为矩阵。更多信息-
import numpy as np
matrix = np.array([[1, 2, 2], [2, 3, 4], [4, 3, 5]])
truth_table = np.array([0, 1, 0], dtype=bool)
# or truth_table = np.array([False, True, False])
print(matrix[truth_table])
# prints [[2, 3, 4]]