首页 > 解决方案 > 如何在数组数组中找到整个数组的索引?

问题描述

我试图在数组数组中找到整个数组的索引。因此,对于示例数组ab以下示例,我想知道可以在其中找到子数组的哪些a索引b

import numpy as np 

a = np.array([[[1 ,2], [3, 4]], [[5, 6], [7, 8]]])
b = np.array([[[5, 6], [7, 8]], [[1, 2], [3, 4]]])

由于b包含子数组[[5, 6], [7, 8]][[1,2], [3,4]]并且由于这分别对应于 的第二行和第一行a,所以我希望解决方案返回[1, 0]

我尝试过使用np.where(b == a),但这会返回两个数组相同的位置,如下所示:

(array([0, 0, 0, 0, 1, 1, 1, 1]),
 array([0, 0, 1, 1, 0, 0, 1, 1]),
 array([0, 1, 0, 1, 0, 1, 0, 1]))

标签: pythonarraysnumpy

解决方案


您可以添加all(axis=1)where

np.where((a == b).all(axis=1))
# (array([0, 0], dtype=int64), array([0, 1], dtype=int64))

如果您只想要第一个结果添加索引

np.where((a == b).all(axis=1))[0]
# [0 0]

推荐阅读