我想将矩阵A(4,4)提取到矩阵b(7,4)中。
矩阵下方:
{{1}}
我想要的结果是:
{{1}}
如果有可能,我想得到一个包含其余部分的矩阵R,如下所示:
{{1}}
主要目标是比较 Matrix_A 和 Matrix_A_extract_from_Matrix_B 。
我真正的问题是将矩阵与数千行进行比较,Matrix_A和Matrix B只是一个简化问题的例子。
非常感谢你的帮助。
答案 0 :(得分:1)
首先,你的数组是3d数组,你应该挤压大小,将它们转换为2d数组,以便于计算。
In [27]: Matrix_A = np.squeeze(Matrix_A)
In [28]: Matrix_B = np.squeeze(Matrix_B)
然后,您可以使用np.in1d
查找常见第一列的索引,并使用简单的索引提取它们:
In [29]: Matrix_B[np.in1d(Matrix_B[:, 0],Matrix_A[:, 0])]
Out[29]:
array([[ 10. , 2.7 , 4.8 , -5.8 ],
[ 20. , 12.4 , -7.1 , 4.9 ],
[ 30. , -6.8 , 0.47, 3.8 ],
[ 40. , 16.2 , 5.7 , -8.3 ]])
In [30]: Matrix_B[np.logical_not(np.in1d(Matrix_B[:, 0],Matrix_A[:, 0]))]
Out[30]:
array([[ 15. , -1.4, -6.4, 8.1],
[ 25. , -1.5, 6.2, -4.8],
[ 35. , 5.4, -4.8, 10.5]])