当元素不符合条件时删除数组行

时间:2019-11-06 19:14:12

标签: python numpy

我有一个包含x行3列的2D数组,每列都有一个条件,当其中一个元素不满足约束条件时如何删除行

For example:
5<[:,0]<10
5<[:,1]<10
1<[:,2]<3

[[1, 2, 3 ],
 [4, 5, 6],
 [7, 8, 9],
 [9, 9, 1]]

Result should be
[[9,9,1]]

2 个答案:

答案 0 :(得分:0)

def comply(row):
    if row[0] > 5 and row[0] < 10 and row[1] > 5 and row[1] < 10 and row[2] > 1 and row[2] < 3:
        return True
    else:
        return False


result = []
A = [[1, 2, 3 ],
 [4, 5, 6],
 [7, 8, 9],
 [9, 9, 1]]

for row in A:
    if comply(row):
        result.append(row)

答案 1 :(得分:0)

下面的表达式仅获取符合条件的行。

new = arr[(arr >= [5,5,1]).all(1) & (arr < [10,10,3]).all(1)]

要获得预期结果,您需要将条件更改为>=,因为1不大于1:)