检查条件是否在列表列表中成立

Check whether a condition holds within a list of lists

我有一个列表列表(使用 NumPy 转换为数组)如下:

array([[ 1,  1,  1],
       [ 4,  3,  1],
       [ 5,  2,  1],
       [ 8,  4,  1],
       [ 9,  4,  1],
       [12,  3,  1],
       [13,  2,  1],
       [14,  3,  2],
       [15,  1,  1]])

我想得到一个布尔变量,指示在上面的数组中是否有任何行的第一列和最后一列分别等于r1和r2。请注意,r1 和 r2 是常数。最有效的方法是什么?谢谢

你可以把你的条件放在里面np.any。例如:

import numpy as np

a = np.array([[ 1,  1,  1],
       [ 4,  3,  1],
       [ 5,  2,  1],
       [ 8,  4,  1],
       [ 9,  4,  1],
       [12,  3,  1],
       [13,  2,  1],
       [14,  3,  2],
       [15,  1,  1]])

np.any((a[:,0] == 15) & (a[:,2] == 1))
# True

np.any((a[:,0] == 14) & (a[:,2] == 1))
# False