Python - 将矩阵a提取到矩阵b中

时间:2016-11-30 23:20:06

标签: python numpy matrix compare

我想将矩阵A(4,4)提取到矩阵b(7,4)中。

矩阵下方:

{{1}}

我想要的结果是:

{{1}}

如果有可能,我想得到一个包含其余部分的矩阵R,如下所示:

{{1}}

主要目标是比较 Matrix_A Matrix_A_extract_from_Matrix_B

我真正的问题是将矩阵与数千行进行比较,Matrix_A和Matrix B只是一个简化问题的例子。

非常感谢你的帮助。

1 个答案:

答案 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]])