Je ne sais pas quoi tf-idf
attend, mais je peux peut-être vous aider avec la fin clairsemée.
Faire une matrice creuse :
In [526]: M=sparse.random(4,10,.1)
In [527]: M
Out[527]:
<4x10 sparse matrix of type '<class 'numpy.float64'>'
with 4 stored elements in COOrdinate format>
In [528]: print(M)
(3, 1) 0.281301619779
(2, 6) 0.830780358032
(1, 1) 0.242503399296
(2, 2) 0.190933579917
Convertissez-le maintenant en coo
format. C'est déjà ça (j'aurais pu mettre le random
un paramètre de format). Dans tous les cas les valeurs en coo
format sont stockés dans 3 tableaux :
In [529]: Mc=M.tocoo()
In [530]: Mc.data
Out[530]: array([ 0.28130162, 0.83078036, 0.2425034 , 0.19093358])
In [532]: Mc.row
Out[532]: array([3, 2, 1, 2], dtype=int32)
In [533]: Mc.col
Out[533]: array([1, 6, 1, 2], dtype=int32)
Il semble que vous souhaitiez ignorer Mc.row
, et en quelque sorte rejoindre les autres.
Par exemple sous forme de dictionnaire :
In [534]: {k:v for k,v in zip(Mc.col, Mc.data)}
Out[534]: {1: 0.24250339929583264, 2: 0.19093357991697379, 6: 0.83078035803205375}
ou une colonne dans un tableau 2d :
In [535]: np.column_stack((Mc.col, Mc.data))
Out[535]:
array([[ 1. , 0.28130162],
[ 6. , 0.83078036],
[ 1. , 0.2425034 ],
[ 2. , 0.19093358]])
(Aussi np.array((Mc.col, Mc.data)).T
)
Ou juste une liste de tableaux [Mc.col, Mc.data]
, ou [Mc.col.tolist(), Mc.data.tolist()]
liste de listes, etc.
Pouvez-vous le reprendre à partir de là ?