我知道可以通过以下方式找到点积:
>>> vector1 = (2,3,5)
>>> vector2 = (3,4,6)
>>> sum(p*q for p,q in zip(vector1, vector2))
48
但我正在尝试为元组找到点积说:
>>> vector3 = ((2,2),(3,3),(5,5))
>>> vector4 = ((3,3),(4,4),(6,6))
如何在不使用 numpy 的情况下做到这一点。
我不能只使用像 sum(p*q for p,q in zip(vector3, vector4))
这样的语句吗?
因为当我尝试同样的时候,我得到如下错误:
>>> vector3 = ((2,2),(3,3),(5,5))
>>> vector4 = ((3,3),(4,4),(6,6))
>>> sum(p*q for p,q in zip(vector3, vector4))
Traceback (most recent call last):
File "<pyshell#5>", line 1, in <module>
sum(p*q for p,q in zip(vector1, vector2))
File "<pyshell#5>", line 1, in <genexpr>
sum(p*q for p,q in zip(vector3, vector4))
TypeError: can't multiply sequence by non-int of type 'tuple'
>>>
如何解决?
最佳答案
我认为这里的问题是您尝试做的事情在数学上没有明确定义。您希望它如何工作?正确的输出应该是什么?
您的 vector3
和 vector4
实际上是 2 x 3
形式的矩阵。这些不是坐标向量。您不能对它们应用点积。您可以将点积运算应用于 vector1
和 vector2
,因为它们的形式是 1 by n
:它们是列向量。您不能将点积应用于任何非列向量的对象。
关于python - python中元组的点积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26495628/