python - 在列上过滤 numpy 矩阵

标签 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]])

我要的是对第三列值为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/

相关文章:

python - 如何找到 Pypi 包的最新*兼容*版本?

namedtuple 中 namedtuple 的 Python 语法

python - numpy 中两个列表的成对操作(距离)

python - numpy - 二维数组索引

arrays - 相当于 julia 中的 numpy.c_

python - 属性错误: 'module' object has no attribute 'GraphDatabaseService'

python - Miniconda "installs"numpy 但 Python 无法导入它

c - 如何移动最大数量的矩阵

python - 如何使用numpy获取没有对角线的三角形上矩阵

python - 需要帮助在 python 中附加字典项目