我有一个 numpy 数组列表,其中包含一个名称-值对列表,它们都是字符串。每个名称和值都可以在列表中多次找到,我想将其转换为二进制矩阵。
列表示值,而行表示键/名称,当字段设置为 1 时,它表示该特定名称值对。
例如
我有
A : aa
A : bb
A : cc
B : bb
C : aa
我想把它转换成
aa bb cc
A 1 1 1
B 0 1 0
C 1 0 0
我有一些代码可以做到这一点,但我想知道是否有一种更简单/开箱即用的方式来使用 numpy 或其他一些库来做到这一点。
到目前为止,这是我的代码:
resources = Set(result[:,1])
resourcesDict = {}
i = 0
for r in resources:
resourcesDict[r] = i
i = i + 1
clients = Set(result[:,0])
clientsDict = {}
i = 0
for c in clients:
clientsDict[c] = i
i = i + 1
arr = np.zeros((len(clientsDict),len(resourcesDict)), dtype = 'bool')
for line in result[:,0:2]:
arr[clientsDict[line[0]],resourcesDict[line[1]]] = True
结果有以下
array([["a","aa"],["a","bb"],..]