首页 > 解决方案 > 根据字典值和列表创建新矩阵

问题描述

下面是一个简化的例子:

val = [10,23,45,31,78,43,1,67,82]

indx = [1,4,5,8]
indx2 = [3,6,7]
indx3 = [0,2]

samp = {}
samp[0] = indx
samp[1] = indx2
samp[2] = indx3

假设我有一个字典(samp),它有两个组:第 0 组和第 1 组。字典有向量 val 中值的索引。

我想通过创建一个 8 X 2 矩阵来根据字典中的给定组提取 val 中的所有值,其中我有组和两列中的值按索引顺序排列,所以它看起来像这样:

val  group
10   2
23   0
45   2
31   0
87   0
43   1
1    1
67   0
82   1

我该怎么做呢?

标签: pythonpandasdictionarynumpy-ndarray

解决方案


得到这个的一种方法

[(j, next(k for k,v in samp.items() if i in v)) for i,j in enumerate(val)]

输出:

[(10, 2),
 (23, 0),
 (45, 2),
 (31, 1),
 (78, 0),
 (43, 0),
 (1, 1),
 (67, 1),
 (82, 0)]

推荐阅读