【问题标题】: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)]