ScientificPython has a Vector class. eg:
In [1]: from Scientific.Geometry import Vector In [2]: v1 = Vector(1, 2, 3) In [3]: v2 = Vector(0, 8, 2) In [4]: v1.cross(v2) Out[4]: Vector(-20.000000,-2.000000,8.000000) In [5]: v1.normal() Out[5]: Vector(0.267261,0.534522,0.801784) In [6]: v2.cross(v1) Out[6]: Vector(20.000000,2.000000,-8.000000) In [7]: v1*v2
source share