python-提取矩阵a中的矩阵b



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

矩阵下方:

>>> Matrix_A = numpy.array([[[10,1.5,-3.8,8.0],[20,10.2,5.2,6.7],[30,0.5,-6.2,-7.1],[40,-0.7,-0.6,-0.5]]])
>>> Matrix_A
array([[[ 10. ,   1.5,  -3.8,   8. ],
        [ 20. ,  10.2,   5.2,   6.7],
        [ 30. ,   0.5,  -6.2,  -7.1],
        [ 40. ,  -0.7,  -0.6,  -0.5]]])
>>> Matrix_B = numpy.array([[[10,2.7,4.8,-5.8],[15,-1.4,-6.4,8.1],[20,12.4,-7.1,4.9],[25,-1.5,6.2,-4.8],[30,-6.8,0.47,3.8],[35,5.4,-4.8,10.5],[40,16.2,5.7,-8.3]]])
>>> Matrix_B
array([[[ 10.  ,   2.7 ,   4.8 ,  -5.8 ],
        [ 15.  ,  -1.4 ,  -6.4 ,   8.1 ],
        [ 20.  ,  12.4 ,  -7.1 ,   4.9 ],
        [ 25.  ,  -1.5 ,   6.2 ,  -4.8 ],
        [ 30.  ,  -6.8 ,   0.47,   3.8 ],
        [ 35.  ,   5.4 ,  -4.8 ,  10.5 ],
        [ 40.  ,  16.2 ,   5.7 ,  -8.3 ]]])

我想要的结果是:

    >>> Matrix_A_extract_from_Matrix_B
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 ]]])

,如果可能的话,我想获得一个包含其余的矩阵R,如下所示:

    >>> Matrix_R
array([[[ 15. ,  -1.4,  -6.4,   8.1],
        [ 25. ,  -1.5,   6.2,  -4.8],
        [ 35. ,   5.4,  -4.8,  10.5]]])

主要目标是比较 MATRIX_A MATRIX_A_A_EXTRACT_FROM_MATRIX_B

我真正的问题是将矩阵与数千行比较Matrix_a et artrix b,这只是简化问题的示例。

非常感谢您的帮助。

首先要关闭所有阵列AR 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]])

相关内容

  • 没有找到相关文章

最新更新