2015-01-09 6 views
1

많은 반복 요소가있는 배열이 있으며 가장 많이 반복하는 0이 아닌 요소의 수와 값을 찾고 싶습니다. 일종의 일을하고 있지만 이것이 파이썬에서 올바른 방법인지 확실하지 않습니다.numpy : 배열에있는 각 고유 요소의 수를 찾으십시오.

일부 테스트 코드 :

import numpy as np 

x = np.array([0, 0, 0, 10, 10, 10, 10, 10]) 

l = list() 
for i in np.unique(x): 
    l.extend((np.count_nonzero(x[x==i]),)) 

maximum_times = np.max(l) 

이 나에게 최대의 요소는 반복 횟수를 알 수 있지만, 루프에 대한이에 대한 좋은 생각이 아니다 사용 아마도 그 요소가 무엇인지 말해하지 않습니다 그러나 나는 다른 어떤 pythonic 해결책도 생각해 낼 수 없었다.

+5

Numpy 버전? 1.9에서는'return_counts = True'를'unique()'에 전달할 수 있습니다. –

답변

2

Ashwini가 언급했듯이 return_counts=True을 사용할 수 있습니다.

x = np.array([0, 0, 0, 10, 10, 10, 10, 10]) 

elements, repeats = np.unique(x, return_counts=True) 
index = repeats.argmax() 
elem = elements[index] 

print "Max elem is " + str(elem) + " with " + str(repeats[index]) + " repetitions." 
+0

이것은 내 시도보다 훨씬 우아합니다. 감사. – Luca

관련 문제