gpt4 book ai didi

python - 在列上过滤 numpy 矩阵

转载 作者:太空宇宙 更新时间:2023-11-03 12:45:51 26 4
gpt4 key购买 nike

我有一个 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com