【问题标题】:How to find all indices above a specific value in a python multidimensional list如何在python多维列表中找到高于特定值的所有索引
【发布时间】:2013-09-01 12:43:08
【问题描述】:

我在 python 中有一个带有一些浮点值的二维列表。我想找出列表中高于特定值的所有元素的索引。

例如,在一个 2 x 4 列表中,如下所示(为方便起见为整数):

100    200    100    250
125    100    250    100

我需要所有等于或大于 200 的值的索引。这些索引是 [0][1]、[0][3] 和 [1][2]。

请在这方面提供帮助。

谢谢。

【问题讨论】:

  • 你能告诉我们你到目前为止尝试了什么吗?

标签: python list multidimensional-array


【解决方案1】:

Numpy 非常方便:

>>> import numpy as np
>>> a = [[100, 200, 100, 250], [125, 100, 250, 100]]
>>> a=np.array(a)
>>> np.argwhere(a>=200)
      array([[0, 1],
             [0, 3],
             [1, 2]])

【讨论】:

    【解决方案2】:

    可以使用嵌套循环来做到这一点:

    indices = []
    for i, row in enumerate(grid):
        for j, val in enumerate(row):
            if val > threshold:
                indices.append((i, j))
    

    但您很可能应该使用numpy,它提供高速矢量化操作和非常方便的语法。用numpy ndarray代替嵌套列表,代码如下:

    numpy.where(grid > threshold)
    

    【讨论】:

      【解决方案3】:

      第一种方法是,没有任何库:

      x = [ [100, 200, 100, 250],
            [125, 100, 250, 100] ]
      indices = []
      for i, range in enumerate(x):
          for j, elem in enumerate(range):
               if elem >= 200:
                   indices.append((i, j))
      

      结果是:

      >>> indices
      [(0, 1), (0, 3), (1, 2)]
      

      【讨论】:

        猜你喜欢
        • 2021-07-31
        • 1970-01-01
        • 1970-01-01
        • 2019-05-28
        • 2015-07-29
        • 2017-11-13
        • 2019-06-28
        • 2021-11-19
        • 2016-10-26
        相关资源
        最近更新 更多