如何在显示的等式中为numpy数组采用每个向量组合

时间:2017-11-03 14:00:47

标签: python arrays numpy vector

numpy.dot(nparray[1],nparray[2])/((np.sum(nparray[1]))*(np.sum(nparray[2]))

我想实现它,以便它为我的numpy数组中的所有向量执行此操作。我该怎么做呢?我假设它会使用itertools.combinations,但之后我就输了。在上面的等式中,我使用了第一个和第二个向量,但我想对所有向量组合这样做。是否有可能将其贴上标签?

编辑* 如果你有一种方法可以在没有itertools的情况下实现这一点,那么从下面的评论中可以看出,这不是我应该使用的方法。

1 个答案:

答案 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函数)。