Python 使用numpy查找两个列表列表之间的交点
我有两张名单 案例1Python 使用numpy查找两个列表列表之间的交点,python,arrays,numpy,Python,Arrays,Numpy,我有两张名单 案例1 x = [[1,2],[3,4],[5,6]] y = [[1,2],[3,4]] 我试过numpy import numpy as np np.intersect1d(x,y, return_indices=True) >>> (array([1, 2, 3, 4]), array([0, 1, 2, 3]), array([0, 1, 2, 3])) 期望结果 >>> (array([1, 2, 3, 4]), array([0
x = [[1,2],[3,4],[5,6]]
y = [[1,2],[3,4]]
我试过numpy
import numpy as np
np.intersect1d(x,y, return_indices=True)
>>> (array([1, 2, 3, 4]), array([0, 1, 2, 3]), array([0, 1, 2, 3]))
期望结果
>>> (array([1, 2, 3, 4]), array([0, 1]), array([0, 1]))
>>> (array([1, 2, 3]), array([0, 1]), array([0, 1]))
案例2
x = [[1,2],[3,10],[5,6]]
y = [[1,2],[3,4]]
期望结果
>>> (array([1, 2, 3, 4]), array([0, 1]), array([0, 1]))
>>> (array([1, 2, 3]), array([0, 1]), array([0, 1]))
对我来说,最重要的部分是知道列表x中的哪些索引在列表y中有部分匹配。类似于:
[[0,1], # indices of x
[0,1]] # indices of y
更新1:没有必要使用numpy,但我需要一个快速的解决方案。
更新2:修复了numpy输出版本中的打字错误。首先,我将数组转换为numpy:
import numpy as np
x = np.array([[1,2],[3,4],[5,6]])
y = np.array([[1,2],[3,4]])
之后,我找到了他们的交叉点:
intersection=np.intersect1d(x,y, return_indices=True)[0]
定义了一个与列表进行比较的简单函数(我知道这里有改进的余地):
终于找到了你想要的(y也是一样):
首先,我将数组转换为numpy:
import numpy as np
x = np.array([[1,2],[3,4],[5,6]])
y = np.array([[1,2],[3,4]])
之后,我找到了他们的交叉点:
intersection=np.intersect1d(x,y, return_indices=True)[0]
定义了一个与列表进行比较的简单函数(我知道这里有改进的余地):
终于找到了你想要的(y也是一样):