python怎么定义向量类 您所在的位置:网站首页 python怎么定义向量 python怎么定义向量类

python怎么定义向量类

2023-10-09 15:00| 来源: 网络整理| 查看: 265

我一直在寻找一种在python中处理向量的方法,但在这里或文档中没有找到完全适合我的解决方案。在

到目前为止,我为一个向量类得出的结论是:class vec(tuple):

def __add__(self, y):

if len(self)!=len(y):

raise TypeError

else:

ret=[]

for i,entry in enumerate(self):

ret.append(entry+y[i])

return vec(ret)

def __mul__(self, y):

t=y.__class__

if t == int or t==float:

#scalar multiplication

ret=[]

for entry in self:

ret.append(y*entry)

return vec(ret)

elif t== list or t==tuple or t==vec:

# dot product

if len(y)!=len(self):

print 'vecs dimensions dont fit'

raise TypeError

else:

ret=0

for i,entry in enumerate(self):

ret+=entry*y[i]

return ret

还有一点,为了简短起见,省略掉了。

到目前为止,一切都很好,但我有很多小的具体问题(而且可能会在问题出现时发布更多):是否有数字和序列类型的基类?如何处理它们?在

我怎样才能使这一切变得更Python-y呢?我想学习如何编写好的Python代码,所以如果你发现一些低效或丑陋的东西,请告诉我。在

精确性呢?由于python似乎只有在必要时才从整数转换为浮点,因此输入和输出通常是相同的类型。所以可能会有很大或很小的数字问题,但我现在真的不需要这些。我应该担心精度,还是python会为我这样做?自动转换为最大可能的类型会更好吗?那是哪一个?除此之外会发生什么?在

我想在一个涉及很多向量方程和函数的项目中使用n维向量,我希望能够使用数学教科书中常用的符号。如您所见,这是从元组继承的(为了便于构造、不变性和索引),并且为了使用(+、-、*、…)运算符,大多数内置函数都被重写。它们只在左操作数是vec时才起作用(我能改变它吗?)。乘法包括点积和标量积,如果两个向量都是三维的,pow也用于叉积

测试脚本:

^{pr2}$

在0.135秒内调用50009个函数cProfile.run('testVec()')

在0.064秒内调用100009个函数



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有