Skip to main content

Simple, general, pure Python vectors

Project description

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.

A few explanatory examples

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]

Testing

hypervector uses py.test and hypothesis, with tox as a test runner.

How fast is hypervector?

Dunno. Probably pretty slow. If you need speed, use numpy.

Alternatives

There are many other libraries with similar features to hypervector. Some notable examples I have used:
  • numpy

  • pyeuclid — Has unrelated Vector2 and Vector3 classes. Also has two separate packages for Python 2 and Python 3.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hypervector-0.1.0.tar.gz (9.5 kB view details)

Uploaded Source

Built Distribution

hypervector-0.1.0-py3-none-any.whl (8.6 kB view details)

Uploaded Python 3

File details

Details for the file hypervector-0.1.0.tar.gz.

File metadata

  • Download URL: hypervector-0.1.0.tar.gz
  • Upload date:
  • Size: 9.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.0 setuptools/39.2.0 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.6

File hashes

Hashes for hypervector-0.1.0.tar.gz
Algorithm Hash digest
SHA256 bfb40121af46731947fa63ee2b53f0cafdac7a6d37a5a147e0d2f64547ed03bd
MD5 f38c01c00879e43cb6db157650f71917
BLAKE2b-256 d11ccf5e6167a9019bbf8871f9a8d732163072b011c094287eb9eb85e3d4bba3

See more details on using hashes here.

File details

Details for the file hypervector-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: hypervector-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 8.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.0 setuptools/39.2.0 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.6

File hashes

Hashes for hypervector-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a4fd128929635e88290aece410bcfd302f31f72222a29bab89909150ebad1df4
MD5 b9bb1b2824f3e09a1b271bf0c53dc513
BLAKE2b-256 afad6ac18cbef6a11de1017aa55383a44f41c194df32529dfa5f6685de3b8258

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page