如何在numpy中搜索满足条件的索引?

时间:2014-05-28 22:45:29

标签: python arrays numpy

我在一个名为' a'的numpy数组中有一个对应于给定日,月和年的列。我将所有这三个值与另一个名为' b'的数组的列进行比较。它也对应于日,月和年,以找到' a'等于' b'到目前为止,我尝试过:

a[:,3:6,1] == b[1,3:6]

array([[False,  True,  True],
   [ True,  True,  True],
   [False,  True,  True],
   ..., 
   [False, False, False],
   [False, False, False],
   [False, False, False]], dtype=bool)

工作正常,但我需要与[True,True,True]对应的行 我也试过了:

np.where(a[:,3:6,1] == b[1,3:6], a[:,3:6,1])

ValueError: either both or neither of x and y should be given

a[:,:,1].all(a[:,3:6,1] == b[1,3:6])

TypeError: only length-1 arrays can be converted to Python scalars

这是一种快速简便的方法吗?

1 个答案:

答案 0 :(得分:3)

您可以沿最后一个轴使用np.all()

rows = np.where((a[:,3:6,1]==b[1,3:6]).all(axis=1))[0]

它将存储在rows所有行包含True值的索引中。