Python 使用指标矩阵(二进制矩阵)提取数据
如何使用二进制矩阵来获取数据集中的特定位置。举个例子,如果我们拿一个1类和2类的矩阵,看起来像这样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 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