我正在嘗試計算大型資料集中每個字符的出現次數。例如,如果資料是 numpy 陣列 ['A', 'AB', 'ABC'] 那么我想要 {'A': 3, 'B': 2, 'C': 1} 作為輸出。我目前有一個看起來像這樣的實作:
char_count = {}
for c in string.printable:
char_count[c] = np.char.count(data, c).sum()
我遇到的問題是這對我的資料來說花費的時間太長了。我想計算大約 14,000,000 個不同的字串,并且此實作對于該資料量而言效率不高。任何幫助表示贊賞!
uj5u.com熱心網友回復:
另一種方式。
import collections
c = collections.Counter()
for thing in data:
c.update(thing)
相同的基本優勢 - 只迭代資料一次。
uj5u.com熱心網友回復:
一種方法:
import numpy as np
from collections import defaultdict
data = np.array(['A', 'AB', 'ABC'])
counts = defaultdict(int)
for e in data:
for c in e:
counts[c] = 1
print(counts)
輸出
defaultdict(<class 'int'>, {'A': 3, 'B': 2, 'C': 1})
請注意,您的代碼迭代len(string.printable)了多次,data而我的建議迭代了一次。
一種使用字典的替代方法:
data = np.array(['A', 'AB', 'ABC'])
counts = dict()
for e in data:
for c in e:
counts[c] = counts.get(c, 0) 1
print(counts)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/535233.html
標籤:Python麻木的
