删除所有具有第n个列元素== 1的行

时间:2019-12-09 21:23:07

标签: python numpy matrix

我有一个二维的numpy矩阵,看起来像这样

[
 [10, 20, 30, 8, 1],
 [25, 60, 10, 1, 2],
 [54, 12, 89, 5, 1],
 [44, 53, 34, 1, 3]
]

我需要删除所有具有第4个元素(第4列)== 1的行。在这种情况下,我需要删除第2和第4行。 除了遍历矩阵并检查每一行的第4个元素外,Python中是否有一种允许我执行此操作的快速语法?

3 个答案:

答案 0 :(得分:2)

您可以选择符合条件的行来代替删除元素。

arr[arr[:,3] != 1]

示例:

>>> arr[arr[:,3] != 1]
array([[10, 20, 30,  8,  1],
       [54, 12, 89,  5,  1]])

答案 1 :(得分:1)

您在这里:

temp = [
 [10, 20, 30, 8, 1],
 [25, 60, 10, 1, 2],
 [54, 12, 89, 5, 1],
 [44, 53, 34, 1, 3]
]

temp = np.array(temp)
arg = np.argwhere(temp[:,3]!=1)
temp[arg[:,0]]

您将得到结果:


array([[10, 20, 30,  8,  1],
       [54, 12, 89,  5,  1]])

答案 2 :(得分:0)

您可以使用列表理解。

演示:

arr = [
 [10, 20, 30, 8, 1],
 [25, 60, 10, 1, 2],
 [54, 12, 89, 5, 1],
 [44, 53, 34, 1, 3]
]
new_arr = [l for l in arr if l[3] != 1]

print(new_arr)
[[10, 20, 30, 8, 1], [54, 12, 89, 5, 1]]