在Python中选择具有公共属性的元素的索引

时间:2014-11-08 23:40:28

标签: python arrays numpy

我有一个numpy数组,想获取验证公共属性的元素的索引。例如,假设数组为np.array([1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1]),并且我希望所有元素的索引等于1,因此输出将为[0, 4, 5, 8, 10, 14]

我已经定义了以下程序

def find_indexes(A):
    res = []
    for i in range(len(A)):
        if A[i] == 1:
            res.append(i)
    return res

有更多的“pythonesque”方式吗?更具体地说,我想知道是否有类似于布尔索引的东西:

A[A>=1]

将返回元素的索引而不是元素本身。

3 个答案:

答案 0 :(得分:0)

使用np.where

  import numpy as np
  x = np.array(np.array([1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1])
  indices, = np.where(x == 1)
  print(indices)

答案 1 :(得分:0)

使用numpy.where

arr = np.array([1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1])
print np.where(arr == 1)
(array([ 0,  4,  5,  8, 10, 14]),)

答案 2 :(得分:0)

纯Python的列表理解:

ar = [i for i in range(len(a))if a [i] == 1]