将数组中的数字簇分组
group clusters of numbers in array
我有一个像这样的数组:
A = [1,3,8,9,3,7,2,1,3,9,6,8,3,8,8,1,2]
我想数一数 "entry clusters" 是 >5
的数量。在这种情况下,结果应该是 4
,因为:
[1, 3, (8,9), 3, (7), 2, 1, 3, (9,6,8), 3, (8,8), 1, 2]
给定 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]
这给了我所有大于 5
的条目。但是我怎样才能对每一组数字进行分组呢?
您可以使用 itertools
中的 groupby
函数。
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
我有一个像这样的数组:
A = [1,3,8,9,3,7,2,1,3,9,6,8,3,8,8,1,2]
我想数一数 "entry clusters" 是 >5
的数量。在这种情况下,结果应该是 4
,因为:
[1, 3, (8,9), 3, (7), 2, 1, 3, (9,6,8), 3, (8,8), 1, 2]
给定 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]
这给了我所有大于 5
的条目。但是我怎样才能对每一组数字进行分组呢?
您可以使用 itertools
中的 groupby
函数。
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