根据另一个数组对 np.array 的列表进行子集化

Subset a list of np.array based on another array

我有一个数组列表,例如:

L = [[1, 2, 3], [3,4,5], [1,2,3], [4,5,6]]

我还有另一个变量显示这些组中的哪些组合在一起,例如:

group = [0, 0, 1, 1] 

我想根据 group 拆分 L,所以结果是:

L_split = [[[1,2,3], [3,4,5]], 
           [[1,2,3], [4,5,6]]]

然而,它需要以这样的方式完成,以便组中唯一值的数量可以改变。例如,组同样可以是

group = [0, 0, 1, 2] 

group = [3, 2, 1, 0] 

我认为可能有一个以某种方式涉及集合的解决方案,但这是我尚未解决的问题。对解决方案的任何建议将不胜感激。

我使用 zip 命令和预先确定大小的列表解决了这个问题。

clusterZip = zip(group, L)
clusterSubset = [list() for _ in xrange(np.unique(group))]
for row in clusterZip:
    c = row[0]
    v = row[1]
    clusterSubset[c].append(v)