Python删除符合条件的行

时间:2018-04-11 07:45:55

标签: python numpy

我想以有效的方式将这个matlab句子翻译成python

Matlab: pairs(sum(pairs, 2) == 0, :) = [];

对是[N,2]矩阵,其中矩阵例如可以是30

在python中存在类似于[]的任何类似语法,以便删除满足条件求和的行(对,2)== 0?

2 个答案:

答案 0 :(得分:3)

Numpy提供where功能:

import numpy as np
>>> x = np.array([1,2,3,4])
>>> x
array([1, 2, 3, 4])
>>> np.where(x <= 2)
(array([0, 1], dtype=int64),)

>>> x = np.arange(6).reshape(2, 3)
>>> x
array([[0, 1, 2],
       [3, 4, 5]])

>>> x[np.where( x < 5 )]
array([0, 1, 2, 3, 4])

组合使用wheredelete,您可以使用以下方法删除上述矩阵中的第一行:

>>> np.delete(x, np.where(np.all(x < 3,axis=1)), axis=0)
array([[3, 4, 5]])

答案 1 :(得分:0)

你也可以在没有numpy的情况下做到这一点。

vec = [1, 2, 3, 4]
vec = [x for x in vec if x <=2]
vec
[1, 2]

参考:https://docs.python.org/3/tutorial/datastructures.html#list-comprehensions