繁体   English   中英

如何在python多维列表中查找特定值以上的所有索引

[英]How to find all indices above a specific value in a python multidimensional list

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

例如,在下面的2 x 4列表中(为方便起见,整数):

100    200    100    250
125    100    250    100

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

请帮助解决这个问题。

谢谢。

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]])

可以使用嵌套循环执行此操作:

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)

第一个approch将是,没有任何库:

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)]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM