2014-11-08 23 views
0

我有一個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]在Python中選擇具有公共屬性的元素的索引

我已經定義了以下過程

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

是否有這樣做的更「pythonesque」的方式?更具體地講,我想知道是否有類似布爾索引的東西:

A[A>=1] 

,將返回元素的索引,而不是內容本身。

回答

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

列表理解:

AR = [I爲i的範圍(LEN(A))如果[I] == 1]

相關問題