我有两个二维数组,我必须创建一个新的数组来过滤第二个数组,其中第一列索引匹配。数组大小不同。
基本上是这样的:
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
我按以下方式尝试:
match =[]
for i in range(len(x)):
if x[i] == x1[i]:
new_array = x1[i]
match.append(new_array)
print match
这似乎行不通。请建议创建新二维数组的方法
最佳答案
尝试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]])
np.isin(arr2[0], arr1[0])
检查arr2[0]
的每个元素是否在arr1[0]
中然后,我们使用结果作为布尔索引数组来选择arr2
中的元素。