【发布时间】:2020-02-01 21:34:35
【问题描述】:
我正在寻找一种快速的方法来执行以下操作: 假设我有一个数组
X = np.array([1,1,1,2,2,2,2,2,3,3,1,1,0,0,0,5])
我正在寻找连续的频率,而不是简单的元素频率。所以前 1 重复 3 次,比 2 5 次,比 3 2 次,等等。所以如果 freq 是我的函数,那么:
Y = freq(X)
Y = np.array([[1,3],[2,5],[3,2],[1,2],[0,3],[5,1]])
例如,我可以这样写:
def freq(X):
i=0
Y=[]
while i<len(X):
el = X[i]
el_count=0
while X[i]==el:
el_count +=1
i+=1
if i==len(X):
break
Y.append(np.array([el,el_count]))
return np.array(Y)
我正在寻找一种更快更好的方法来做到这一点。 谢谢!
【问题讨论】:
-
使用
itertools.groupby