如何通过一个数组值找到数组的索引?

时间:2017-11-23 05:09:28

标签: python arrays numpy

我正在尝试按值找到numpy数组的索引。但是,该值也是一个数组。换句话说,它是一个多维数组。

例如:

a = [
[[1, 0], [0, 2], [3, 3]], 
[[1, 0], [1, 3], [1, 0]], 
[[4, 0], [2, 3], [3, 0]]
]

我想找到[[1, 0], [1, 3], [1, 0]]的索引,即1。基本上,我想在数组中找到与我所拥有的数组模式匹配的元素。

我怎么能用numpy做到这一点?

2 个答案:

答案 0 :(得分:2)

np.flatnonzero与广播比较结合使用:

a

array([[[1, 0],
        [0, 2],
        [3, 3]],

       [[1, 0],
        [1, 3],
        [1, 0]],

       [[4, 0],
        [2, 3],
        [3, 0]]])

np.flatnonzero((a == [[1, 0], [1, 3], [1, 0]]).all(1).all(1))
array([1])

借用其他答案,您可以将多个轴传递给all

np.flatnonzero((a == [[1, 0], [1, 3], [1, 0]]).all((1, 2)))
array([1])

答案 1 :(得分:1)

您可以使用np.allnp.where

 np.where(np.all(a==template, axis=(1,2)))[0][0]
 # 1