Mua*_*tik 3 python numpy matrix
我有一个numpy矩阵如下:
data = np.matrix(
"5 3 1;"
"4 4 1;"
"6 4 1;"
"8 2 1;"
"3 5 1;"
"1 7 1;"
"5 4 1;"
"0 1 0;"
"2 0 0")
# Output:
matrix([[5, 3, 1],
[4, 4, 1],
[6, 4, 1],
[8, 2, 1],
[3, 5, 1],
[1, 7, 1],
[5, 4, 1],
[0, 1, 0],
[2, 0, 0]])
Run Code Online (Sandbox Code Playgroud)
我想要的是过滤第三列的矩阵,其值为1; 也就是说,我不想得到第3个值为0的行.总之,我想提取下面的矩阵:
matrix([[5, 3, 1],
[4, 4, 1],
[6, 4, 1],
[8, 2, 1],
[3, 5, 1],
[1, 7, 1],
[5, 4, 1]])
Run Code Online (Sandbox Code Playgroud)
我尝试了几种组合来过滤它; 但他们都没有为我工作.例如,以下代码排除了零行,但它只返回第一列.
data[data[:,2]>0]
#Output:
matrix([[5, 4, 6, 8, 3, 1, 5]])
Run Code Online (Sandbox Code Playgroud)
有没有办法过滤这个矩阵而不显式编写循环语句?
使用np.array而不是np.matrix允许你做一个简单的掩码索引,如:
a = a[a[:, 2] != 0]
Run Code Online (Sandbox Code Playgroud)
转换np.matrix为np.array你可以做:
a = np.asarray(a)
Run Code Online (Sandbox Code Playgroud)