假设我有通过使用第一个数组项目对条目进行索引来合并两个数组?
a = [1,2,1,3,2,2]
b = [4,7,9,5,6,11]
我期待
c = [[4,9],[7,6,11],[5]]
因为你可能会看到生成的子列表是在由列表a
指出的指数。我们将如何在Python中做什么?
假设我有通过使用第一个数组项目对条目进行索引来合并两个数组?
a = [1,2,1,3,2,2]
b = [4,7,9,5,6,11]
我期待
c = [[4,9],[7,6,11],[5]]
因为你可能会看到生成的子列表是在由列表a
指出的指数。我们将如何在Python中做什么?
IIUC,我只是在条件循环:
def combine(a,b):
c = [[] for _ in range(max(a))]
for i, elem in zip(a, b):
c[i-1].append(elem)
return c
这给
>>> a = [1, 1, 1, 2, 2, 3]
>>> b = [4, 7, 9, 5, 6, 11]
>>> combine(a,b)
[[4, 7, 9], [5, 6], [11]]
>>> a = [1,2,1,3,2,2]
>>> b = [4,7,9,5,6,11]
>>> combine(a,b)
[[4, 9], [7, 6, 11], [5]]
你可以使用一个defaultdict
:
>>> from collections import defaultdict
>>> d = defaultdict(list)
>>> a = [1,1,1,2,2,3]
>>> b = [4,7,9,5,6,11]
>>> for k,v in zip(a,b):
... d[k].append(v)
...
>>>[x[1] for x in sorted(d.items())]
[[4, 7, 9], [5, 6], [11]]
你将如何在Python做? – 2013-05-10 13:31:54
你想在Numpy的解决方案?你已经标记了标签,但'a'和'b'是列表,你的最终输出'c'是一个列表列表,因为它不是一个统一的形状,所以它不能是一个numpy数组。 – askewchan 2013-05-10 13:33:27
检查.......! @askewchan – erogol 2013-05-10 13:34:21