numpy.dot(nparray[1],nparray[2])/((np.sum(nparray[1]))*(np.sum(nparray[2]))
我想实现它,以便它为我的numpy数组中的所有向量执行此操作。我该怎么做呢?我假设它会使用itertools.combinations,但之后我就输了。在上面的等式中,我使用了第一个和第二个向量,但我想对所有向量组合这样做。是否有可能将其贴上标签?
编辑* 如果你有一种方法可以在没有itertools的情况下实现这一点,那么从下面的评论中可以看出,这不是我应该使用的方法。
答案 0 :(得分:1)
您可以使用索引列表作为代理和itertools,如下所示
import numpy as np
import itertools
N = 5 # size of your vector
M = 5 # number of vectors
a = np.random.rand(M,N)
index = range(M) # using an index to be a proxy to be able to use itertools
for i, j in itertools.combinations(index, 2):
print(np.dot(a[:,i], a[:,j]) # we're accessing the columns of a
现在,不是在for循环中打印,而是调用你的函数(你应该把它定义为一个合适的python函数)。