在python scipy / numpy中按行过滤矩阵元素

时间:2011-03-30 15:31:03

标签: python numpy scipy

如何通过行中的某些条件在Python中的NxM中过滤scipy/numpy矩阵的元素?

例如,只是你可以在哪里(my_matrix != 3)处理矩阵“逐元素”,我想按行执行此操作,以便您可以询问(my_matrix != some_other_row)之类的内容,过滤掉所有不等于some_other_row的行。怎么办呢?

1 个答案:

答案 0 :(得分:3)

假设你有一个矩阵

a = numpy.array([[0, 1, 2],
                 [3, 4, 5],
                 [0, 1, 2]])

并且您希望得到行的索引不等于

row = numpy.array([0, 1, 2])

你可以通过

获得这些指数
indices, = (a != row).any(1).nonzero()

a != row将每个a行与row元素进行比较,返回与a形状相同的布尔数组。然后,我们沿第一轴使用any()来查找任何元素与row中的对应元素不同的行。最后,nonzero()为我们提供了这些行的索引。