我正在尝试按值找到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做到这一点?
答案 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.all
和np.where
:
np.where(np.all(a==template, axis=(1,2)))[0][0]
# 1