使用指标矩阵(二元矩阵)提取数据

Extract data using indicator matrix (binary matrix)

如何使用二进制矩阵来获取数据集中的特定位置。因此,例如,如果我们采用类别 1 和类别 2 的矩阵,如下所示

1 2 0 
0 2 1
0 0 2 

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

a b c 
e f g  
i j k 

给我一个数据集1(使用B1):

a 0 0 
0 e 0
0 0 0 

和数据集 2(使用 B2):

0 b 0 
0 c 0
0 0 k

我在这里放了一个模板来尝试使用 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

与其使用这个“指标矩阵”,不如使用带有嵌套 if 语句的嵌套 for 循环。这会让你得到最终的答案。这将是低效的,但仍然会给你想要的结果。