比较python中的rows元素

2024-10-03 04:35:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我们有一份清单:

import numpy as np


A=[(2, 2, 0), (1, 5, 0), (6, 8, 0), (2, 2, 2) ]

ax=np.asarray([row[0] for row in A])
ay=np.asarray([row[1] for row in A])
az=np.asarray([row[2] for row in A])

print (ax,ay,az)

我想比较ax和ay,当我找到相等的对,其中ax==aylike(2,2,0)和(2,2,2)时,我只保留一次对,但是加上az值。所以在我们的例子中,新的通缉名单B将是:

^{pr2}$

如果有一些代码也能对非常大的列表有效,那就太好了。在


Tags: inimportnumpyforasnpax例子
2条回答

字典(或集合。计数器)比numpy数组更快地检查当前项目。在

因此,如果输出顺序不重要:

from collections import Counter
c = Counter()
A = [(2, 2, 0), (1, 5, 0), (6, 8, 0), (2, 2, 2) ]
for a in A:
    c[a[:2]] += a[2]
B = [list(k) + [v] for k,v in c.iteritems()]

B现在是:

^{pr2}$

如果顺序不重要

from collections import defaultdict

dd = defaultdict(int)
for x, y, z in A:
    dd[(x,y)] += z
res = [k + (v,) for k, v in dd.iteritems()]
# [(1, 5, 0), (6, 8, 0), (2, 2, 2)]

^{pr2}$

相关问题 更多 >