我正试图用python计算矩阵中行之间的余弦距离,并有几个问题要问。所以我正在创建矩阵matr并从列表中填充它,然后为了分析的目的重塑它:
s = []
for i in range(len(a)):
for j in range(len(b_list)):
s.append(a[i].count(b_list[j]))
matr = np.array(s)
d = matr.reshape((22, 254))
d的输出给了我如下的信息:
array([[0, 0, 0, ..., 0, 0, 0],
[2, 0, 0, ..., 1, 0, 0],
[2, 0, 0, ..., 0, 0, 0],
...,
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
[1, 0, 0, ..., 0, 0, 0]])
然后我想使用scipy.space.distance.cosine包计算d矩阵中第一行到其他行的余弦。
我该怎么做?是不是应该换个循环?对矩阵和数组操作没有太多经验。
所以,我如何使用for循环来实现该构造中的第二个参数(d[1]、d[2]等等),以避免每次都启动它:
from scipy.spatial.distance import cosine
x=cosine (d[0], d[6])
最佳答案
您只需使用一个简单的for循环:
import scipy.spatial.distance
dists = []
for row in matr:
dists.append(scipy.spatial.distance.cosine(matr[0,:], row))