2013-08-29 345 views
3

我在Python中有一個包含浮點值的二維列表。我想找出列表中所有元素的索引,這些索引都超出了特定的值。如何查找python多維列表中特定值以上的所有索引

例如,在一個2×4列表如下(整數爲方便起見):

100 200 100 250 
125 100 250 100 

我需要所有其是等於或高於200的值的索引,這些索引是[0] [ 1],[0] [3]和[1] [2]。

請在這方面提供幫助。

謝謝。

+1

Can你向我們展示你到目前爲止所嘗試過的? – Blubber

回答

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

第一計算策略將是,沒有任何庫:

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

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]]) 
相關問題