python - Numpy argwhere 不等式条件

标签 python arrays numpy

假设我有一个 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/

相关文章:

arrays - Swift Array 的 Map 方法是否并发实现?

java - 如何将矩阵转换为 2D ArrayList Java

javascript - 对 'undefined' 类型进行分类

python - 如何使用 python 将其所有索引值的总和添加到 numpy ndarray 的每个元素?

python 闭包/嵌套函数在分配给外部数组时失败

python - 通过 Postman 将 JSON 数据发布到 FastAPI 后端时,值不是有效的字典

python - 返回 render() 时 Django NoReverseMatch

python - word2vec 出现编码错误

大张量上的 numpy n 维智能索引 - 内存效率

python - 如何使用 groupby 将函数应用于 pandas 列?