使用指标矩阵(二元矩阵)提取数据
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 循环。这会让你得到最终的答案。这将是低效的,但仍然会给你想要的结果。
如何使用二进制矩阵来获取数据集中的特定位置。因此,例如,如果我们采用类别 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 循环。这会让你得到最终的答案。这将是低效的,但仍然会给你想要的结果。