Python 获取向量的大小(x,y)

Python 获取向量的大小(x,y),python,python-2.7,oop,vector,Python,Python 2.7,Oop,Vector,我很难让它起作用,因为我能找到的所有答案都更多地集中在numpy数组中的向量上,而不像我在类(OOP)中的答案。(我希望我的措辞是正确的,如果我没有,请原谅) 我想求一个向量(x,y)的大小,下面是我的代码: class Vector(object): def __init__(self, x, y): self.x = x self.y = y 我有两个向量的求和和和减法的代码,但是如何用这个方程得到大小: 幅值=数学sqrt(和(矢量中v的v**2

我很难让它起作用,因为我能找到的所有答案都更多地集中在numpy数组中的向量上,而不像我在类(OOP)中的答案。(我希望我的措辞是正确的,如果我没有,请原谅)

我想求一个向量(x,y)的大小,下面是我的代码:

class Vector(object):

    def __init__(self, x, y):
        self.x = x
        self.y = y
我有两个向量的求和和和减法的代码,但是如何用这个方程得到大小:

幅值=数学sqrt(和(矢量中v的v**2))

这是我的代码,但它没有提供我需要的:

def vector_mag(self):
        x_vector = self.x
        y_vector = self.y
        vector = (x_vector, y_vector)
        magnitude = math.sqrt(sum(v**2 for v in vector))
        return Vector(magnitude)
这会产生一个错误,表示:

第22行,在

打印vector.vector_mag()

第14行,矢量图

返回向量(幅值)

TypeError:init()正好接受3个参数(给定2个)

所以当我在返回部分添加另一个“字符串”时,就像这样…:

返回向量(“向量幅值为:”,幅值)

…程序运行,但给出了一个奇怪的结果

我做错了什么

这是我的“完整”代码:

输入数学

类向量(对象):

向量1=向量(10,1)

向量2=向量(20,2)

向量列表=[(向量1),(向量2)]

对于向量列表中的向量:

 print vector.vector_mag()
向量的大小是一个标量值;换句话说,这是一个单一的数字。向量是数字的集合,因此尝试将标量转换为向量是没有意义的。只需返回不变的大小

return magnitude

您可以这样定义
vector\u mag

def __abs__(self):
    return (self.x ** 2 + self.y ** 2) ** 0.5
那么调用您的方法就很容易了,如下所示:

vector1 = Vector(10, 1)
print 'Magnitude =', abs(vector1)

出于准确性原因,您应该使用以避免任何溢出

from math import hypot

def __abs__(self):
    return hypot(self.x, self.y)
hypot(x,y):返回欧几里德范数sqrt(xx+yy)。这是向量从原点到点(x,y)的长度

这将使:

from math import hypot
class Vector(object):

    def __init__(self, x, y):
        self.x = x
        self.y = y
    def __abs__(self):
        return hypot(self.x, self.y)

v=Vector(3,1)
magnitude = abs(v)

为什么要从
vector\u mag
调用返回另一个向量?是不是,嗯,一个号码?你说得对,图卡斯,我在那里太蠢了,谢谢:)谢谢@Kevin,我得赶快从房子里出来,我会尽快尝试,但我想我已经尝试过了。我会更新你的短作品!谢谢你@Kevin谢谢你的时间@Noctis,我马上试试!作品再次感谢@NoctisWow,这非常有用,谢谢@Guillaume。我会尽快更新!干杯:)
from math import hypot

def __abs__(self):
    return hypot(self.x, self.y)
from math import hypot
class Vector(object):

    def __init__(self, x, y):
        self.x = x
        self.y = y
    def __abs__(self):
        return hypot(self.x, self.y)

v=Vector(3,1)
magnitude = abs(v)