我有一个坐标矩阵(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。我只想要一个带有三个真理的元组。
答案 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')