Python 使用指标矩阵(二进制矩阵)提取数据

Python 使用指标矩阵(二进制矩阵)提取数据,python,arrays,numpy,matrix,sympy,Python,Arrays,Numpy,Matrix,Sympy,如何使用二进制矩阵来获取数据集中的特定位置。举个例子,如果我们拿一个1类和2类的矩阵,看起来像这样 1 2 0 0 2 1 0 0 2 原始数据(A)如下所示: a b c e f g i j k 要给我一个数据集1(使用B1): 和数据集2(使用B2): 我在这里放置了一个模板,用于尝试使用Sympy或NumPy的任何解决方案,以测试任何可能的答案: import sympy as sym import numpy as np from sympy import * init_

如何使用二进制矩阵来获取数据集中的特定位置。举个例子,如果我们拿一个1类和2类的矩阵,看起来像这样

1 2 0 
0 2 1
0 0 2 
原始数据(
A
)如下所示:

a b c 
e f g  
i j k 
要给我一个数据集1(使用
B1
):

和数据集2(使用
B2
):

我在这里放置了一个模板,用于尝试使用Sympy或NumPy的任何解决方案,以测试任何可能的答案:

import sympy as sym
import numpy as np
from sympy import *
init_printing()

a , b, c, d, e, f, g, h, i = sym.symbols("a b c d e f g h i")

B1 =  sym.Matrix([[1,0,0],[0,0,1],[0,0,0]]) # To get dataset 1
B2 =  sym.Matrix([[0,1,0],[0,1,0],[0,0,1]]) # To get dataset 2
A =  sym.Matrix([[a,b,c],[d,e,f],[g,h,i]])  

B1

1 0 0 
0 1 0
0 0 0 

B2

0 1 0 
0 1 0
0 0 1

可以使用嵌套的for循环和嵌套的if语句,而不是使用这个“指示符矩阵”。这会让你得到最后的答案。这将是低效的,但仍然可以得到您想要的结果。

您确定您的
数据集1
是正确的吗?我不明白这个问题谢谢@MarcoP这里有个错误。错误的字母:D我把它修好了,字母是“e”而不是“b”。
0 b 0 
0 c 0
0 0 k
import sympy as sym
import numpy as np
from sympy import *
init_printing()

a , b, c, d, e, f, g, h, i = sym.symbols("a b c d e f g h i")

B1 =  sym.Matrix([[1,0,0],[0,0,1],[0,0,0]]) # To get dataset 1
B2 =  sym.Matrix([[0,1,0],[0,1,0],[0,0,1]]) # To get dataset 2
A =  sym.Matrix([[a,b,c],[d,e,f],[g,h,i]])  

B1

1 0 0 
0 1 0
0 0 0 

B2

0 1 0 
0 1 0
0 0 1