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



我有一个列表列表(使用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

最新更新