我想计算两个字典中单词的余弦相似度。单词是键,数组是值。为此,我需要先将它们转换为2D数组,我进行了一些研究,发现x = x.reshape(1,-1)
我成功地用字典中的单个值将其转换,但是,我不知道如何使用for循环转换整个字典的值。
数据
D
{'A': array([ 4.80625004e-01, -1.40245005e-01, -9.99999046e-03]),
'B': array([-0.46553 , -0.1519755 , 0.41836]),
'C': array([0.0090175 , 0.05817001, -0.09712502])}
D2 (same format as D)
{'D': ([8.11059952e-01, 6.84859991e-01, 1.01619996e-01]),
'E':([-0.82868 , 0.49513 , 0.67581]),
'F':([-0.17093 , 0.88746 , 0.0931135])}
我尝试过
for i in D2.items():
D2[i] = D2[i].reshape(1, -1) #Error on this line
但收到错误: TypeError:不可散列的类型:'numpy.ndarray'
请问一些建议?谢谢你!
答案 0 :(得分:0)
Dict.items()返回键,值对的元组。因此,在您的情况下,i
是键和值的元组。试试:
for i, value in D2.items():
D2[i] = value.reshape(1, -1)
答案 1 :(得分:0)
尝试
from numpy import array
d = dict({'A': array([ 4.80625004e-01, -1.40245005e-01, -9.99999046e-03]),
'B': array([-0.46553 , -0.1519755 , 0.41836]),
'C': array([0.0090175 , 0.05817001, -0.09712502])})
reshaped_arrays = dict()
for x, j in d.items():
dd[x]=j.reshape(1,-1)