匹配两个不同的数组并在python中创建一个新数组

bhj*_*hjh 3 python arrays numpy

我有两个二维数组,我必须通过第一个列索引匹配的第二个数组创建一个新的数组过滤.阵列大小不同.

基本上这个想法如下:

file A

#x   y
1   2
3   4
2   2
5   4
6   4
7   4


file B

#x1    y1
0       1
1       1
11      1
5       1
7       1
My expected output 2D array should look like

#newx     newy
1         1
5         1
7         1
Run Code Online (Sandbox Code Playgroud)

我尝试了以下方式:

match =[]
for i in range(len(x)):
    if x[i] == x1[i]:
        new_array = x1[i]
        match.append(new_array)

print match
Run Code Online (Sandbox Code Playgroud)

这似乎不起作用.请建议一种创建新2D阵列的方法

Tai*_*Tai 5

试试np.isin.

arr1 = np.array([[1,3,2,5,6,7], [2,4,2,4,4,4]])
arr2 = np.array([[0,1,11,5,7], [1,1,1,1,1]])
arr2[:,np.isin(arr2[0], arr1[0])]
array([[1, 5, 7],
       [1, 1, 1]])
Run Code Online (Sandbox Code Playgroud)

np.isin(arr2[0], arr1[0])检查每个元素arr2[0]是否在arr1[0].然后,我们使用结果作为布尔索引数组来选择元素arr2.