Numpy argwhere不平等条件

时间:2014-08-21 22:57:42

标签: python arrays numpy

假设我有一个3000x100的numpy数组np_array。如果我想找到元素大于1的索引,我会这样做:

np.argwhere(np_array > 1)

现在说我有一个3000x101矩阵,我想找到前100列中的元素大于1的所有元素,对于最后一列中的相应行,元素小于0,是如果没有编写循环,有一些简单的方法吗?

1 个答案:

答案 0 :(得分:2)

构造一个布尔数组,表示前100列中哪些行的元素大于1:

numpy.any(np_array[:, :100] > 1, axis=1)

和一个数组,表示最后一列中哪些行的元素小于0:

np_array[:, 100] < 0

并对这两个数组执行逐元AND操作:

numpy.any(np_array[:, :100] > 1, axis=1) & (np_array[:, 100] < 0)

获取形状(3000,)的布尔数组,表示哪些行符合您的条件。如果需要,您可以argwhere获取索引:

numpy.argwhere(numpy.any(np_array[:, :100] > 1, axis=1) & (np_array[:, 100] < 0))