假设我有一个3000x100的numpy数组np_array
。如果我想找到元素大于1的索引,我会这样做:
np.argwhere(np_array > 1)
现在说我有一个3000x101矩阵,我想找到前100列中的元素大于1的所有元素,对于最后一列中的相应行,元素小于0,是如果没有编写循环,有一些简单的方法吗?
答案 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))