在Python中访问特定值的索引

时间:2015-03-10 19:16:38

标签: python numpy

我有一个坐标矩阵(numpy arrays)

arr = [[a,b,c],
       [d,e,f],
       ......]]

其中每个元组都是唯一的,但a,b,c,d,e,f不是。

我想知道如何获得

的索引
arr == [d,e,f]

我正在使用

np.where(arr==[d,e,f])

但它返回了一整堆其他单个元素为真的值。

例如,

vals = arr==[d,e,f]

返回

vals = [[False,False,False],
        [True,True,True],
         ...............]]

但是在做

 np.where(vals==[True,True,True])

返回仅包含一个或两个trues的其他元素,以及三个trues。我只想要一个带有三个真理的元组。

1 个答案:

答案 0 :(得分:1)

您可以通过在第一轴上使用numpy.all来获取包含所有True的行的索引:

>>> arr1 = np.array(['d', 'e', 'f'])
>>> arr2 = np.array([['a' , 'b', 'c'],
       ['d', 'e', 'f'],
       ['g', 'h', 'i']])
>>> np.all(arr2==arr1, axis=1)
array([False,  True, False], dtype=bool)
# Now get the indices using `numpy.where`
>>> np.where(np.all(arr2==arr1, axis=1))[0]
array([1])
>>> arr2[_]
array([['d', 'e', 'f']], 
      dtype='|S1')