我正试图用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))

09-25 19:54