我有一个包含字符串名称-值对的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"],..]