根据另一个数组对 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)
我有一个数组列表,例如:
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)