我有一个二维的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中是否有一种允许我执行此操作的快速语法?
答案 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]]