假设我有一个 3000x100 的 numpy 数组 np_array
。如果我想找到元素大于 1 的索引,我会这样做:
np.argwhere(np_array > 1)
现在假设我有一个 3000x101 矩阵,我想找到前 100 列中的所有元素,其中一个元素大于 1,并且对于最后一列中的相应行,该元素小于 0,是有一些 numpy 方法可以在不编写循环的情况下做到这一点吗?
最佳答案
构造一个 bool 数组,表示前 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,)
的 bool 数组,表示哪些行符合您的条件。如果需要,您可以通过 argwhere 来获取索引:
numpy.argwhere(numpy.any(np_array[:, :100] > 1, axis=1) & (np_array[:, 100] < 0))
关于python - Numpy argwhere 不等式条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25437213/