2012-05-02 3 views
1

2 차원 배열로 배열 된 N 차원 값 배열이 있습니다. 뭔가 같이 :기본 NumPy 데이터 비교

import numpy as np 
data = np.array([[[1,2],[3,4]],[[5,6],[1,2]]]) 

나는 또한 각 데이터 포인트에 대해 비교할 단일 값 x를 가지고 있고, 나는 내 데이터가 x와 같은지 여부를 나타내는 부울 값의 2 차원 배열을 얻을합니다.

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

내가 할 경우

data == x 

은 내가 쉽게 내가 원하는 결과를 얻기 위해 이러한 결합 할 수

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

를 얻을. 그러나 각 슬라이스를 반복 할 필요가 없습니다. 특히 data.shape[2]이 더 클 때 좋습니다. 내가 찾고있는 것은 직접 얻는 방법입니다.

array([[ True, False], 
     [False, True]]) 

이 겉으로보기에 쉬운 작업에 대한 아이디어가 있습니까?

+0

흠. 귀하의 질문에 원하는 출력으로 3-d 배열을 제공하는 동안 내 대답은 결과로 2-d 배열을 제공한다는 것을 알게되었습니다. 그 구분이 중요합니까? –

+0

그게 완벽하지, 고마워. 내 원하는 출력을 수정합니다. – YXD

답변

2

글쎄, (data == x).all(axis=-1)은 원하는 것을 제공합니다. 아직 3 차원 배열을 만들고 그것을 반복하고 있지만 최소한 반복은 파이썬 수준이 아니기 때문에 합리적으로 빠릅니다.