Скользящее окно с приоритетной выборкой
У меня есть список Python, и мне нужно создать из этого скользящее окно с приоритетной выборкой. В частности, список (созданный из файла json) выглядит следующим образом:
print jfile ['id'] =>
445860938797707000
445860940027006000
445860940144463000
445860940907819000
445860941289492000
445860942677803000
445860943072067000
445860944347136000
445860944791740000
445860944778768000
код, который я использую для скользящего окна:
numData=100
stream1=np.random.random(numData)
def prioritySampling (stream, sampleSize):
sample=np.zeros(sampleSize)
tags=np.zeros(sampleSize)
i=0
j=0
while i<len(stream):
if i<sampleSize:
sample[i] = stream[i]
tags[i] = np.random.random()
else:
newTag = np.random.random()
maxTag = np.max(tags)
idxMaxTag = np.argmax(tags)
if maxTag > newTag:
sample[idxMaxTag]=stream[i]
tags[idxMaxTag]=newTag
j=j+1
i=i+1
print 'updates priority=',j
return sample
sampleP1 = prioritySampling (stream1, 10)
p1 = np.array (sampleP1)
Это отлично работает в случайных числах. Что делать, если мне нужно использовать список, как я показал раньше? Имейте в виду, что в списке изначально содержится около 35 000 идентификаторов, и я хочу получить в итоге 10 самых популярных идентификаторов. То есть, некоторые идентификаторы представлены много раз