【问题标题】:TypeError: 'generator' object is not callable when calculating dot product of vectorsTypeError:计算向量的点积时,“生成器”对象不可调用
【发布时间】:2020-10-11 22:39:43
【问题描述】:

我是 Python 新手,正在尝试使用 zip 执行 2 个向量的点积。

from typing import List    
vector = List[float]    
def dot_prod(v:vector,w:vector) -> float:    
    return sum(v_i*w_i for v_i,w_i in zip(v,w))

dot_prod([1,2,3],[4,5,6])

我收到以下错误:TypeError: 'generator' object is not callable

非常感谢您对解决此问题的任何帮助...谢谢!

【问题讨论】:

  • 乍一看似乎没问题。
  • 第二个@MateenUlhaq,这在我的机器上按预期运行(python 3.8)
  • 代码似乎很好,也可以在 Python 3.7.5 上运行。你运行的是什么版本的 Python?
  • 您是否重新定义了sumzip?发布的代码适用于对 Python 3 的干净调用。
  • 谢谢大家。它必须与@TomKarzes 问题有关。我开始了一个新会话,并且能够毫无问题地执行。

标签: python vector typeerror dot-product


【解决方案1】:

您不需要手动操作,您可以这样做

首先你需要安装numpy

pip3 install numpy # If you use python3
pip install numpy # If you use python2
conda install numpy # If you use anaconda

然后使用此代码

import numpy as np

def dot_prod(x, y):  # X,Y are the vectors
    return np.dot(x, y)

为了避免ValueError:

def dot_prod(x, y):
    try:
       return np.dot(x, y)
    except ValueError:
       return np.dot(x, np.array(y).T)

【讨论】:

    猜你喜欢
    • 2012-08-17
    • 2021-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    • 2015-12-29
    • 1970-01-01
    相关资源
    最近更新 更多