假設我有通過使用第一個數組項目對條目進行索引來合併兩個數組?
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