Simple, general, pure Python vectors
hypervector.py
defines arbitrary-dimentional vector types for all your vectoring needs. The vectors are immutable and come with many useful and well-tested vector operations and features.hypervector
is in the public domain.Hello world, NOW IN 3D!
>>> from hypervector import Vector3
>>> (Vector3(1, 2, 1) + Vector3(3, 0, 2)).zxy
Vector3(3, 4, 2)
Higher dimensions
>>> from hypervector import Vector, Vector2, Vector3
>>> Vector2 is Vector[2] and Vector3 is Vector[3]
True
>>> Vector[4](1, 2, 3, 4)
Vector[4](1, 2, 3, 4)
>>> Vector[5](1, 2, 3, 4)
Vector[5](1, 2, 3, 4, 0)
>>> Vector[10].zero
Vector[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
King of infinite (vector) space
>>> vec = Vector(2, 4) # Dimensionless vectors are "infinite"
>>> (vec[0], vec[1], vec[2], vec[1114111])
(2, 4, 0, 0)
Cross-eyed
>>> vec_1, vec_2 = Vector(1, 2, 3), Vector(3, 2, 1)
>>> Vector.cross(vec_1, vec_2)
Vector(-4.0, 8.0, -4.0)
>>> [Vector.dot(_, vec) for vec in (vec_1, vec_2)]
[0.0, 0.0]
>>> vec_3 = Vector(-1, 8, 3, 2)
>>> Vector.cross(vec_1, vec_2, vec_3)
Vector(8.0, -16.0, 8.0, 56.0)
>>> [Vector.dot(_, vec) for vec in (vec_1, vec_2, vec_3)]
[0.0, 0.0, 0.0]
Dunno. Probably pretty slow. If you need speed, use numpy.
There are many other libraries with similar features to
hypervector
. Some notable examples I have used:- numpy
- pyeuclid — Has unrelated
Vector2
andVector3
classes. Also has two separate packages for Python 2 and Python 3.
Get hypervector from PyPI:
Report bugs and offer suggestions at the github issues page.
pip install hypervector
Report bugs and offer suggestions at the github issues page.