数组中的数字簇

urg*_*geo 3 python arrays cluster-computing python-itertools

我有一个像这样的数组:

A = [1,3,8,9,3,7,2,1,3,9,6,8,3,8,8,1,2]
Run Code Online (Sandbox Code Playgroud)

而且我想计算那些"入口集群"的数量>5.在这种情况下,结果应该是4,因为:

[1, 3, (8,9), 3, (7), 2, 1, 3, (9,6,8), 3, (8,8), 1, 2]
Run Code Online (Sandbox Code Playgroud)

给定L数组的长度,我可以这样做:

A = [1,3,8,9,3,7,2,1,3,9,6,8,3,8,8,1,2]
A = np.array(A)

for k in range(0,L):
    if A[k]>5:
        print k, A[k]
Run Code Online (Sandbox Code Playgroud)

这给了我所有大于的条目5.但是我怎么能对每一组数字进行分组呢?

mii*_*lek 5

你可以使用groupby来自的功能itertools.

from itertools import groupby

A = [1,3,8,9,3,7,2,1,3,9,6,8,3,8,8,1,2]
result = [tuple(g) for k, g in groupby(A, lambda x: x > 5) if k]

print(result)
# [(8, 9), (7,), (9, 6, 8), (8, 8)]

print(len(result))
# 4
Run Code Online (Sandbox Code Playgroud)