多维numpy数组__eq__

时间:2012-05-22 08:47:12

标签: python arrays numpy

我有一个二维np.array喜欢

x = np.array([[1,2], [4,5], [4,6], [5,4], [4,5]])

现在我想要x等于[4,5]-> [1, 4])的索引。运算符==以不同的方式工作:

x == [4,5]
array([[False, False],
       [ True,  True],
       [ True, False],
       [False, False],
       [ True,  True]], dtype=bool)

但我想要像[False, True, False, False, True]这样的东西。可以and吗?

通常阵列很大,我必须做很多次,所以我需要一个非常快的方法。

2 个答案:

答案 0 :(得分:4)

这应该是numpy-way:

x = np.array([[1,2], [4,5], [4,6], [5,4], [4,5]])
(x == [4,5]).all(1)

#out: array([False,  True, False, False,  True], dtype=bool)

答案 1 :(得分:0)

之前没有numpy的经验,但这适用于标准数组:

x = [[1, 2], [4, 5], [4, 6], [5, 4], [4, 5]]

indices = [i for i, v in enumerate(x) if v == [4, 5]]
# gives [1, 4]

matches = [v == [4, 5] for v in x]
# gives [False, True, False, False, True]