我有一个 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]])
我要的是对第三列值为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]])
我尝试了几种组合来过滤它;但他们都不适合我。例如,以下代码排除了零行,但它只返回第一列。
data[data[:,2]>0]
#Output:
matrix([[5, 4, 6, 8, 3, 1, 5]])
有没有办法在不显式编写循环语句的情况下过滤这个矩阵?
最佳答案
使用 np.array
而不是 np.matrix
可以让您进行简单的掩码索引,例如:
a = a[a[:, 2] != 0]
要从 np.matrix
转换为 np.array
你可以这样做:
a = np.asarray(a)
关于python - 在列上过滤 numpy 矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36115843/