我有一個檔案目錄,[alphanumeric]_[integer].wav例如,
gdg36dhd3d_0.wav
gdg36dhd3d_1.wav
gdg36dhd3d_2.wav
344fikuo4q_0.wav
344fikuo4q_1.wav
字母數字是 ID,而第二個數字是索引。以下代碼應遍歷檔案名串列并對每個 ID 的索引求和,然后繪制histplot資料的 a。
# sum the number of isolated events for every original sample
number_isolated_events = list()
for k, g in itertools.groupby(isolated_filenames, key=lambda x:re.search('(\w )_', x).group(1)):
number_events = len(list(g))
number_isolated_events.append(number_events)
sns.histplot(number_isolated_events, kde=True, color='b')
但是,histplot當上面的代碼運行并且有 20 項時,看起來像這樣isolated_filenames:

計數是 1.0,我假設這意味著只有一個檔案名與 RegEx 運算式匹配'(\w )_'。
x 軸還顯示了合并的索引總數。我假設每個 ID 最多不超過 6 個索引。我的猜測是所有索引都被求和并與第一個檔案名相關聯,而不是它們各自的檔案名。問題是我的正則運算式還是有更好的方法來實作我正在尋找的東西?
uj5u.com熱心網友回復:
您可以使用
import itertools
isolated_filenames = ['gdg36dhd3d_0.wav','gdg36dhd3d_1.wav','gdg36dhd3d_2.wav','344fikuo4q_0.wav','344fikuo4q_1.wav']
l = [(x.rsplit('_')[0], x.rsplit('_')[-1][:-4]) for x in isolated_filenames]
number_isolated_events = []
for k, g in itertools.groupby(l, key=lambda x: x[0]):
number_isolated_events.append(tuple([k, len(list(g))])) # if you need to count group items
#number_isolated_events.append(tuple([k, sum(int(z[1]) for z in g)])) # if you need to sum numeric suffixes
print(number_isolated_events)
請參閱Python 演示。輸出:
[('gdg36dhd3d', 3), ('344fikuo4q', 2)]
筆記:
[(x.rsplit('_')[0], x.rsplit('_')[-1][:-4]) for x in isolated_filenames]在擴展名之前創建檔案部分串列_和之后的數字(我假設這里的每個檔案都有擴展名)_.wav.wavitertools.groupby(l, key=lambda x: x[0])按檔案“根”名稱分組(不帶數字后綴)len(list(g))獲取每個鍵找到的專案的長度sum(int(z[1]) for z in g)對每個檔案的數字后綴求和。
uj5u.com熱心網友回復:
如果您愿意使用外部庫,則使用 NumPy 的另一種解決方案:
import numpy as np
isolated_filenames = [
"gdg36dhd3d_0.wav", "gdg36dhd3d_1.wav", "gdg36dhd3d_2.wav", "344fikuo4q_0.wav", "344fikuo4q_1.wav",
]
isolated_filenames = [file_name.split("_")[0] for file_name in isolated_filenames]
number_isolated_events = list(zip(*np.unique(isolated_filenames, return_counts=True)))
print(number_isolated_events)
輸出:
[('344fikuo4q', 2), ('gdg36dhd3d', 3)]
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/414647.html
標籤:
下一篇:Python列印陳述句歧義
