首页 > 解决方案 > 如何找到两个 n*m 数组的相似列?

问题描述

array1 = [[1, 2, 3], [4, 5, 6], [2, 5, 8], [5, 6, 9] ]
array2 = [[1, 2, 3], [2, 5, 8]]

array2 在 array1 中的索引 0 和 2 处有一个类似的列,我希望索引作为输出,即 0 和 2

在python中不使用任何长for循环是否可以解决?

标签: pythonlist

解决方案


您可以使用numpy和使用allany如下所示:

>>> import numpy as np
>>> array1 = np.array(array1) 
>>> array2 = np.array(array2)

>>> res = (array1 == array2[:,None]).all(-1).any(0)

>>> res
array([ True, False,  True, False])

>>> idx, = np.nonzero(res)
>>> idx
array([0, 2])

推荐阅读