【发布时间】:2016-11-29 02:49:54
【问题描述】:
我正在尝试在 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.spatial.distance.cosine 包计算 d 矩阵中从第一行到其他每一行的余弦。 我该怎么做?它应该是一些for循环吗?对矩阵和数组运算没有太多经验。
那么我怎样才能在该构造中为第二个参数(d[1]、d[2] 等)使用 for 循环而不是每次都启动它:
from scipy.spatial.distance import cosine
x=cosine (d[0], d[6])
【问题讨论】:
-
那个包不是有一个或两个
pairwise函数吗? -
恐怕不是 - 它使用余弦,它使用 2 个一维数组作为输入,如下所示:余弦 (u,v),其中 u,v-1-D 数组。
-
你在使用 numpy 吗?
-
numpy 表示数组,scipy 表示余弦
-
我在想其中一个答案中提到的
pdist。
标签: python numpy matrix scipy trigonometry