>>> from pandac.PandaModules import Vec3
>>> import numpy
>>> l = []
>>> l.append( Vec3(1,1,1) )
>>> l.append( Vec3(1,1,1) )
>>> l.append( Vec3(1,1,1) )
>>> Vec3(1,1,1)+Vec3(1,1,1)
Vec3(2, 2, 2)
>>> sum(l)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'libpanda.Vec3'
>>> numpy.sum(l)
9.0
>>>
我想要一些快速(快速==不是纯粹的python循环但是numpy velocity)方法来实现:
>>> my_smart_sum(l)
Vec3(3,3,3)
答案 0 :(得分:2)
试试这个:
sum(l, start=Vec3(0,0,0))
或者,有了numpy,这个:
numpy.sum(l, axis=0)
速度取决于矢量加法的实现。您应该使用timeit
来确定哪种方法最快。这看起来像这样:
python -m timeit "import numpy; foo = [[1,1,1],[1,1,1]]" "numpy.sum(foo, axis=0)"
10000 loops, best of 3: 46.5 usec per loop
您传递的第一个字符串是setup语句 - 这不会包含在时间中。您传递的第二个字符串是您实际想要的时间代码。我对pandac
一无所知,但有时使用Cython可以加速数字运算循环。