我有一個包含幾乎相同的數值組的列表。即(1004.523,1004.575,1004.475,791.385,791.298,791.301,791.305,791.299)基於Python中的模糊值縮小列表
我想要做的就是通讀列表並找到所有1004.5 +值聚合它們並找到平均值。然後繼續查找所有791.0 + - 值,並對它們執行相同操作。
我不知道每個「團隊」中會有多少個人價值觀,也不知道會有多少個團體。
我正在尋找的結果是另一個列表,其中將包含每個組的平均值。所以在這個例子中我的結果是(1004.524,791.3176)
我目前使用的代碼非常Kludgey,似乎應該有一個更好的方法來做到這一點。
正如你所看到的,我必須在else中重複一次代碼兩次,如果自從最後一組數字沒有觸發else,那麼一次結束。加上完成後,如果我需要添加最後一個值。
如果我使用len(音調)而不是len(音調)-i我得到超出範圍的錯誤。
任何想法或建議,將不勝感激。謝謝你的幫助。
埃德
toneLen = len(tones) -1
for i in range(0, toneLen):
if abs(tones[i]-tones[i+1]) <= 2.0:
tmpTones.append(tones[i])
else:
freq = mean(tmpTones)
newTones.append(freq)
tmpTones = []
tmpTones.append(tones[i+1])
freq = mean(tmpTones)
newTones.append(freq)
tones = newTones
UPDATE: 首先,我要感謝大家誰提交建議。答覆非常快速且有幫助。我應該可能在下面包含更多信息。非常感謝你的幫助。
其次,快速解釋我正在嘗試做什麼。我們當地的消防部門正在尋找一種方法來跟蹤接近他們的部門的派遣。大多數情況下,他們使用兩個音調順序尋呼,即1000Hz,然後是500Hz。
所以我使用numpy fft來查找音頻。由於音調的準確度似乎約爲±2 Hz,因此我將計算出的頻率與已知尋呼音列表進行比較,並選擇最接近的匹配。在所有音調與尋呼音匹配後,我會尋找與感興趣的部門匹配的信息。
有一件事我不知道什麼時候開始,在任何給定的調度中,同一個音可以重複多次,所以音的順序很重要。例如: 707.3,339.6,707.3,569.1,447.2,569.1將是一個典型的調度。然後我看看是否有任何音調對是我感興趣的,如果有的話,我會顯示一條消息
再次感謝您的幫助。
埃德
你知道這些小組是多麼「廣泛」嗎(即,你是否將這個'2.0'拉出空中,或者是否可以推理出來)?這些團體能否「重疊」?就像有可能會有一系列不斷增加的價值相差很小,涵蓋範圍很廣嗎? – 2010-12-14 19:48:43
通過查看我發現的數字,通常他們往往是+ -2Hz。這些數字是從聲卡採樣的結果。我目前每秒採樣7次,然後進行fft計算以確定主頻率。一般來說,第一個音長是1秒或大約7個樣本,第二個音是大約3秒長或大約21個樣本。通常有不止一組音調,所以模式會重複。我從來沒有聽過超過六套音調,所以一般來說,我認爲200可能是一個實際的限制。 – edwardb 2010-12-16 17:36:55
感謝您對確切問題的補充信息,它有幫助。例如,我的解決方案不起作用,因爲它重新排序樣本。有一個問題,在嘗試對它們進行計數之前對它們進行分類不是更簡單嗎?匹配確切的等價物比近似的要容易得多。 – 2010-12-17 17:52:41