numpy.dot返回与其中一个向量相同的值

时间:2017-04-20 11:55:00

标签: python numpy dictionary dot-product

我有一个字典,键值,值对为{'p h' : 12, 'i e' : 14},在文本语料库中有一个双音素及其频率。

    biphone_frequency = get_biphone_dist(baseline_corpus_phonetic)

此函数从文本语料库中返回具有上述规范的字典。

我需要创建两个词典,其中一个uniform_RP表示所有双音素的均匀百分比分布,另一个correlation_CP显示双音素的实际百分比分布。所以,我采取:

    length_dict = len(biphone_frequency.values())
    sum_dict = sum(biphone_frequency.values())

    #calculating uniform distribution of all the biphones
    rp = 1.0/float(length_dict)

    # creating dictionary with constant values wrt every biphone
    uniform_RP = {x : rp for x in biphone_frequency.keys()}         

    # creating dictionary with actual values wrt every biphone
      correlation_CP = {}
      for key, val in biphone_frequency.items():
          cp = val/float(sum_dict)   ##individual %age distribution
          correlation_CP[key] = cp

我需要在correlation_CP.values()uniform_RP.values()之间找到点积。所以我用:

      RP_values = np.array(uniform_RP.values())
      CP_values = np.array(correlation_CP.values())
      correlation_coefficient = np.dot(RP_values, CP_values)

问题是点积始终与uniform_RP.values()中的值相同。任何人都可以建议为什么会发生这种情况?!

1 个答案:

答案 0 :(得分:2)

这种情况正在发生,因为它是如何定义点积的。您将每个元素乘以1 / N,然后将它们相加。这是因为uniform_RP每个值包含1 / N.结果将始终为correlation_CP的平均值。

我使用1 / N代替1.0/length_dict进行empasis。他们的意思是一样的。