首页 > 解决方案 > 如何使用范围在numpy数组中查找列表元素的索引

问题描述

假设我有一个 numpy 数组,如下所示:

arr = np.array([[[1, 7], [5, 1]], [[5, 7], [6, 7]]])

其中每个最里面的子数组都是一个元素。例如,例如;[1, 7] 和 [5, 1] 都被视为元素。

...我想找到所有满足:[<=5, >=7] 的元素。因此,上述示例的真实结果数组如下所示:

arr_truthy = [[True, False], [True, False]]

...至于arr第一个值中的一个底部元素是<=5,第二个是>=7.

我可以通过遍历每个轴轻松解决这个问题arr

    for x in range(arr.shape[0]):
        for y in range(arr.shape[1]):
            # test values, report if true.

..但是这种方法很慢,我希望有更多的numpy方法可以做到。我已经尝试过np.where,但我无法弄清楚如何有条件地执行多子元素。

我有效地尝试测试元素中每个数字的独立条件。

谁能指出我正确的方向?

标签: pythonnumpy

解决方案


你在寻找

(arr[:,:,0] <= 5) & (arr[:,:,1] >= 7)

? 您可以执行广播比较。

输出:

array([[True, False],
       [True, False]])

推荐阅读