2012-04-18 2 views
1

두 개의 10x2x2 complex64 배열이 있습니다.동일한 모양의 2 개의 복잡한 다차원 배열에서의 상태 확인

numpy.sqrt(a[empty_one_or_both]) 

이 있습니까 : 목표는 같은 단지 비어 쌍에 다른 작업을 수행하는 것입니다

import numpy 
a = numpy.zeros((10,2,2), "complex64") 
b = numpy.ones((10,2,2), "complex64") 

empty_one_or_both = (a.reshape(10,4) != 0).all(axis=1) * (b.reshape(10,4) != 0).all(axis=1) # EDIT 

: 나는없는 한쪽 또는 양쪽에 모두 0 × 2 배열의 어느 찾으려면 더 나은 방법?

+0

'*'를 사용하면 두 행렬 0 만 일치시킵니다. 나는 네가 '~'하고 싶어한다고 생각해. –

+0

편집을 참조하십시오. 역의 문제를 찾고, 둘 모두에서 모두 0이 아니며, 사용 가능한 마스크를 가지고 있는지 확인하십시오. – Benjamin

+0

그런 경우, 필자는'*'보다'&'또는'numpy.logical_and()'를 선호합니다. 그 결과는 물론 동일하지만, 표현하고자하는 것이 논리적 AND 일 때 부울 값을 곱하는 것은 조금 이상합니다. (이 외에도, 당신이이 접근법에 대해 개선하고 싶은 것이 무엇인지 생각할 수 없습니다. 그것은 직접적이고 효율적이어서 당신을 괴롭히는 것이 아닙니까?) –

답변

2

NumPy와 1.7으로 당신이 할 수 있습니다

a.all(axis=(1, 2)) & b.all(axis=(1, 2)) 

보다 더 많은 정보를위한 docs을 볼 수 있지만, 당신은 이전 버전을 사용하는 경우, 당신이 바꿀 생각, 또는 모든 일 (1) .all (1).

+0

그의 의견에 대해 Sven Marnach에게도 감사의 말을 전합니다. – Benjamin

관련 문제