2013-05-29 3 views
0

다른 배열에 빈 하위 배열이있는 배열의 각 쌍마다 dot product을 수행해야합니다. 난, 전자중첩 배열에서 빈 배열 처리

event1: 
array([[ 5.35375254e-07 6.40314998e-02], 0.159332022418, [], 
     0.0396021990432, 0.00795516103045, 0.0457216188153, [], 
     0.0331742073438], dtype=object) 

event2: 
array([[ 5.97561615e-06 5.56173790e-02], 0.119262253938, [], 
     0.161581488798, 0.00560146601083, 0.0735139212697, 0.0585291344263, 
     0.177536950441], dtype=object) 

당신은 내가 이러한 배열에 약간의 빈 배열을 볼 수 있습니다, 그래서 내적을 수행 할 때, 그 빈 배열 [] 모든 것을 확인한다.

먼저 빈 배열을 시도하고 0으로 변경했지만 배열의 각 요소를 반복하고 빈 값을 0으로 변경하는 것보다 더 나은 솔루션을 생각할 수 없습니다.

이 작업을 수행하는 효율적인 방법은 무엇입니까?

+0

방금'''처럼 뭔가를 사용할 수 없습니다 [난, 난에 대한 우편에서 J를 J를 * (합니다 Event1, event2) i와 j 경우]'''또는'''[나는 J를 * (filter (None, event1), filter (None, event2))]]'''원하는 결과에 따라 – oleg

+0

실제로 대답을 찾지 못했습니다. – Moj

답변

1

실제로 저는 numpy nonzero() 메소드를 사용하여이를 해결했습니다. 0이 아닌/non_empty 요소의 색인을 리턴합니다. 예 :

a = array([[5.97561615e-06, 0.055617379], 0.119262253938, [], 0.21321, []], dtype=object) 

In [110]: a.nonzero() 
Out[110]: (array([0, 1, 3]),) 

non_empty= set(a.nonzero()[0]) 
complete_index = set(range(len(a))) 
empty = list(complete - non_empty) 
a[empty]= 0 
In [130]: a 
Out[130]: array([[5.97561615e-06, 0.055617379], 0.119262253938, 0, 0.21321, 0], dtype=object) 
+0

''array [f ff f ff])''' – oleg

+0

죄송하지만 무슨 뜻인지 이해할 수 있습니다. – Moj

+1

이 코드는 내가 볼 수있는 코드와 동일합니다. '''a = array ([a에있는 f의 경우 0 또는 f)]''' – oleg