我有一个numpy数组的列表,其中包含一个名称-值对的列表,它们都是字符串。每个名称和值都可以在列表中多次找到,我想将其转换为二进制矩阵。在
列表示值,而行表示键/名称,当字段设置为1时,它表示特定的名称-值对。在
例如
我有
A : aa
A : bb
A : cc
B : bb
C : aa
我想把它转换成
^{pr2}$我有一些代码可以做到这一点,但我想知道是否有一种更简单/开箱即用的方法来使用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"],..]
这是
np.unique
的作业。不清楚数据的格式,但需要得到两个一维数组,一个有键,另一个有值,例如:如果没有重复的键值对,这个代码就可以正常工作。如果有重复,我建议滥用scipy的稀疏模块:
^{pr2}$你可能有
我要这样做:
^{pr2}$编辑
考虑到您的格式,它可能更符合以下行:
这两者都给出了:
相关问题 更多 >
编程相关推荐