Sparse vectors.
Project description
Sparse vectors optimized for memory and NumPy integrations.
numpy
handles densely populated n-dimemsional arrays. scipy.sparse
handles sparsely populated 2-dimensional arrays, i.e., matrices. What's missing from the ecosystem is sparsely populated 1-dimensional arrays, i.e., vectors.
NumPy | Python | Spector |
---|---|---|
1-dim bool numpy.array |
set[int] |
spector.indices |
1-dim float numpy.array |
dict[int, float] |
spector.vector |
scipy.sparse.dok_matrix |
dict[int, dict[int, float]] |
spector.matrix |
Indices and vectors are implemented in Cython as hash sets and maps. All native operations are optimized and release the GIL.
- conversion between sparse
numpy
arrays - conversion between dense
numpy
arrays - binary set operations
- binary math operations
map
,filter
, andreduce
operations withnumpy
universal functions
Usage
indices
A sparse boolean array with a set interface.
>>> from spector import indices
>>> ind = indices([0, 2])
>>> ind
indices([2 0])
>>> 1 in ind
False
>>> ind.add(1)
True
>>> ind.todense()
array([ True, True, True])
>>> ind.fromdense(_)
indices([2 1 0])
vector
A sparse float array with a mapping interface.
>>> from spector import vector
>>> vec = vector({0: 1.0, 2: 2.0, 4: 1.0})
>>> vec
vector([4 2 0], [1. 2. 1.])
>>> vec[2] += 1.0
>>> vec[2]
3.0
>>> vec.todense()
array([1., 0., 3., 0., 1.])
>>> vector.fromdense(_)
vector([4 2 0], [1. 3. 1.])
>>> vec.sum()
5.0
>>> vec + vec
vector([0 2 4], [2. 6. 2.])
Vectors support math operations with scalars, and with vectors if the set method is unambiguous.
vector operation | set method | ufunc |
---|---|---|
+ |
union | add |
* |
intersection | multiply |
- |
subtract | |
/ |
true_divide | |
** |
power | |
| |
union | max |
& |
intersection | min |
^ |
symmetric_difference | |
difference |
difference |
matrix
A mapping of keys to vectors.
>>> from spector import matrix
>>> mat = matrix({0: {1: 2.0}})
>>> mat
matrix(<class 'spector.vector.vector'>, {0: vector([1], [2.])})
>>> mat.row, mat.col, mat.data
(array([0]), array([1]), array([2.]))
Installation
% pip install spector
Tests
100% branch coverage.
% pytest [--cov]
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
Built Distributions
Hashes for spector-1.5-cp312-cp312-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 21b01587bea6d71540b4ac7851c859463f218a4069ad76ca67c0f0c75b074166 |
|
MD5 | 192b788aa87a0f8bc104e912a7197bc7 |
|
BLAKE2b-256 | 614f549b94ee4f0114b230784de57cd43197c42ebdf5fcc7466b4f53d100df2f |
Hashes for spector-1.5-cp312-cp312-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5af5bd5b91f6c774fec62eddec5711fa9af58f6fce1367f5d83400e9cfde9823 |
|
MD5 | 84355c3b31855668cad6fd0acb60953c |
|
BLAKE2b-256 | 4c99d81c51573e1f4c223f74f7cd180d926513ebd82118394fe1335389b2af38 |
Hashes for spector-1.5-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3396335195319587d613c4056dd40beb0727fb16bc5887504e9487c8617f68f3 |
|
MD5 | 63ea26b118a3ef3d910a7645c1ac2893 |
|
BLAKE2b-256 | 61075938d9ec3c42d1c02f69fdcc77b21ff26d3518cd91df8d3fc11a52401ef6 |
Hashes for spector-1.5-cp312-cp312-musllinux_1_2_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0c3e8d96f8a7122a2ffe5fa83fe3c28c44424de709f51b93ef8e80f4bb45bf36 |
|
MD5 | 86abd2574e752f77114dbeec00850d86 |
|
BLAKE2b-256 | 520c0a7fef6f103543141eb0befd613049329573c6ece28e9809c0f106d4e6da |
Hashes for spector-1.5-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0cfdc993381a398379143e12a46aa4ef92cfb7bb72e9490d5d9f94546fefec81 |
|
MD5 | fef46bc703cb8a21b454bad4a654641f |
|
BLAKE2b-256 | 66b79de0e67d639191e891268efe187f0b56890df797111eec1c1aa874eb519c |
Hashes for spector-1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4402958d92d0b2f396345966188c990751965fe89e6f3f4e07d702f3a397adb9 |
|
MD5 | 4e6b05bda38e745306860f5cd48e0b3c |
|
BLAKE2b-256 | 4bb53163fc057140d9cba2ff33aaf07fab871f898ae6ee8eb073702386eaaac7 |
Hashes for spector-1.5-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e73f06c9734782c2ccc0231b4ae708ce19da16592940b6d96f45416f4a162826 |
|
MD5 | 9a417741fb61c3b48901c0513b2bc424 |
|
BLAKE2b-256 | 91946dc92b50b0b4a336858c26b7784003a5e58405346941e1fca58152b07293 |
Hashes for spector-1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b89f348270c39c51b6bd6a74e0d3347a28290213186721adc35d28925ca0def3 |
|
MD5 | 23fe8938e9805e318e8f887becb93cfa |
|
BLAKE2b-256 | d03b5a44b67e657c7ae03ad4533154413f16c09f4e65a497dd55e3e264e2fb5a |
Hashes for spector-1.5-cp312-cp312-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 60619a131cb7b822053643947e6a824a12313e59ee4bf39055b0767146d36c6b |
|
MD5 | 552b98169b437381f924d83e328c98f4 |
|
BLAKE2b-256 | 10b0f474a8881f45f69af3f4774444dc75be54a57450ee095ad92308d213b900 |
Hashes for spector-1.5-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6de014b7fc3761c38433bd533e0af7d0206bebbe7ccecd5b7b309089b69e42e3 |
|
MD5 | 65cca7eee7d1222ce7879a3065f4333b |
|
BLAKE2b-256 | 1ed0852df17353994cd42a444a0dd39ac9faec4238d534dbcef22531b7a66b7a |
Hashes for spector-1.5-cp311-cp311-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fa38e845f5dca242a3fb1255dc0026a8bd4f1eb102a5466e691d035add219a1e |
|
MD5 | bcbb92ea18e8752a0b0cf9c5f89791df |
|
BLAKE2b-256 | 3fbdba4f92596dff1b2725c4c071810a1b849eee64f1798299dcc6f3ab31e21b |
Hashes for spector-1.5-cp311-cp311-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5bbb0c9fa2f8e553d4751a2e0408db7e31f2ffbb0b2c8a36bd2ac86c24e95bcc |
|
MD5 | 2b622afa7798a66939e4a96aaf41d0c9 |
|
BLAKE2b-256 | d2d8bc57573e8c08380364681c5345eeb5b9a2502b0ce1c49b4a8e97aa2fdcae |
Hashes for spector-1.5-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f704808fb2d34178dccde89e11b5827cab0c2101da3c5eaffbb0dbe2fd4cc9b5 |
|
MD5 | 7b98a664108e8382c6c01e950f918e82 |
|
BLAKE2b-256 | 7f6fc6ca1654781554009750f11883ea2f2ede8e77082c64378467965e3b6c83 |
Hashes for spector-1.5-cp311-cp311-musllinux_1_2_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3775509bb524179ba75893d14086fe41e4fd797b233b9b9f935608225ccdde05 |
|
MD5 | cca812936b35f59061f8c7327493a31f |
|
BLAKE2b-256 | 28ac0594c62622b762edf897227fff18ab4bc152272af67d55f21fb3ff025289 |
Hashes for spector-1.5-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 682de1799fcd59962501892f6eacad536cb1dd6baae7f59446afcfde87d3f835 |
|
MD5 | 20baabf1e7e263111ba8fba734854f80 |
|
BLAKE2b-256 | 6606fc0d9ccf7770d033270f1017235edb6025537f3c6decaa3cc05e3a04cae8 |
Hashes for spector-1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f58a599b6ba0014e249cae34d235b3fceb3833a9665688f1d8838acced4275ca |
|
MD5 | 67945b081fba2b7e4ce359570778019b |
|
BLAKE2b-256 | 3eb4d4d6557bd951cb61d7f1d5c9f35da1fccc32371cef5873cb26a331bedec2 |
Hashes for spector-1.5-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 62cc5a8a07b8f89a3d7677d6509fda3990e55a4b51690756a621dc5b63441e19 |
|
MD5 | cdf522528e522c9f3abe90401ae34023 |
|
BLAKE2b-256 | 15d4e7300b3faf6d6c5bd4bd7aa3e9c87efe71bb30bc614ac02968d0347ac50e |
Hashes for spector-1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ec8aa118bb584954ca35a3a4e1479f35cd523002cfd26d91016807fb81b25cf7 |
|
MD5 | b6e3d5564cc1dc27966cc712bc508929 |
|
BLAKE2b-256 | caf1ce2bda294d560c82830018bd9ab47ccf12fd32d406d561b640530468a4fc |
Hashes for spector-1.5-cp311-cp311-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 78f3a0d52dac7331815f022a1349ae37e14b376eb83465d387c1bd76ceefa95f |
|
MD5 | f8517d8e0f440cfa03381dc870146b17 |
|
BLAKE2b-256 | 1652e2975055e8dc1311a870ba5607cd6319917b69743bbc34f4d2e268392f65 |
Hashes for spector-1.5-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6edacb367d5c2669c54de08009b176e5b8111ce435dfacf3ffb656bea647efb1 |
|
MD5 | e2307f7f6b6444622f4f40c2c1dc8cdd |
|
BLAKE2b-256 | 0625a6a3431f481348e36d49401224576de0c222b002149ba49472fa2a9cf977 |
Hashes for spector-1.5-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 53cbecb35e1c731732332b6773491b5aaa140c351b2a1e2f8857c70ccbf41de0 |
|
MD5 | a1b4f9a690baa9e48e8ec1a4fefc5fbf |
|
BLAKE2b-256 | 1685d2aa408aaf507523c416ab20f1dcdd03bf0ba193557cfc888e3097d1d424 |
Hashes for spector-1.5-cp310-cp310-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c67086eff8bf0493359901f46f90cb48effede4969ac1a342c389d7c9badf82b |
|
MD5 | 364a62f77932febbad3469b625990ad8 |
|
BLAKE2b-256 | 78ee9b629332eb739559732219e6943610a190892875a4e3aee8dced0e087cde |
Hashes for spector-1.5-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d0b25c41613c13d37641378a90e83cb19ed21c39d6b7d574fdd82fbfbf2d593c |
|
MD5 | 0efe290197519091e674938b5d9586ab |
|
BLAKE2b-256 | 9434a2c12ebf5b27e711ac067a162da7c5be77e22d8dac5caef75f959dc505eb |
Hashes for spector-1.5-cp310-cp310-musllinux_1_2_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c742c72d773221fa6134b49944864145f681ae8cb151a89ccc51775ca373d1e8 |
|
MD5 | 34fb28183c5504ae32438bc9cf2f6e79 |
|
BLAKE2b-256 | 7e83700892fdab5c2b779e449a013795c03b88bc641ab9995a842b4690483894 |
Hashes for spector-1.5-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 27c2944a5a4ccd13ef819e42db51cbb618e17bb4e3d30a882487d4b3836cf4af |
|
MD5 | 3accfe4c3815242cab47b5a2fea0434f |
|
BLAKE2b-256 | e5a01e8008ad8902c440e5e9692fb8fff6587307807c28ed3210e5e552907f17 |
Hashes for spector-1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8c43ab8596d6403d900dc7c9beb22d65b63c7889aead257f4cfc4fc992950789 |
|
MD5 | 6622605dccf186a49e8d4ed82335f156 |
|
BLAKE2b-256 | ddfacfdae281232643662830033c92c71787198a9bca2a601d48658af5bb245e |
Hashes for spector-1.5-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f904f4370f8a9c6807fc5bbd8774fdb48f658638572d8efff0bb0452cf272a19 |
|
MD5 | 7dc57d9cbe5f64e21cbdbef90d8cf8ae |
|
BLAKE2b-256 | 0f49508417fb3fed54693c47fe916de6e3244e8ed65fe6df6c1bf7450992a388 |
Hashes for spector-1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6ef8abfd07ae37496d73973aeeab54c31fbeb158d9fe5550f7901b66598124b2 |
|
MD5 | 81196912324bd8ce1337ce07af8a3b7e |
|
BLAKE2b-256 | 863b6c3623dda08be696e1e278010c189e7a76cbcfe36ac5677ef77f5e1f35f1 |
Hashes for spector-1.5-cp310-cp310-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1d5ed3fd7d179c0441e19e0f0b1e2f0b7e2663228c59af0f21d96ecd0f880eae |
|
MD5 | 055d57bbbe5d38d2b759b643bc563181 |
|
BLAKE2b-256 | 6fa5bb39877deb4b1546cc705f09b5ed3f36eac37636abdd04e503702e9caa31 |
Hashes for spector-1.5-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7540e13f2c0c4ddb12a5a5d235992b5fcc4b84f940bd2294982fb2bb90cec55a |
|
MD5 | 7d220d888829b0dafbcc7056af126fe5 |
|
BLAKE2b-256 | c83f96558f2815eeb5b11b77d1fb8bdfc4419e118a1bc70d26887925dfa92b2d |
Hashes for spector-1.5-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4c59ac5789817420ce86cfb4fafb77994c6e89cc6200771912c3cdc6a263c36a |
|
MD5 | d6aad121777cdf54a12f21d36fe51a26 |
|
BLAKE2b-256 | 0c5652612c4adbbdb4035b30178bbdf675a83bf49520a81b042bd130369b7e9c |
Hashes for spector-1.5-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2078670c382d12b9ae4d1e3501542a026132b4a9fefbae712f32e16a2657c79f |
|
MD5 | 5e66a979a2f678ccf61ce6082198e774 |
|
BLAKE2b-256 | 816d6b850d992ba891243fce99d6d09ed8a565ee551852a75dc992e2d5f8c917 |
Hashes for spector-1.5-cp39-cp39-musllinux_1_2_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fb76c45316e685e5434d36e703951a53e7893505a05a325ae4027c495fbc4921 |
|
MD5 | 23a338487f33dc16b2f364f9a3d7ee1c |
|
BLAKE2b-256 | 078563827515c0de388f419f0ac5be5b59f11a75c9af84198acc71c0c1b5246a |
Hashes for spector-1.5-cp39-cp39-musllinux_1_2_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 117a20b05e1a6bb6c10715859569454cec19c736addc3295f872997fd5f5839a |
|
MD5 | f7e86b7220445d5c9ceb888680be9bf5 |
|
BLAKE2b-256 | 49fa4a7a5c7941be39ab4ad101097b8082bc81658c3d260d0dc6f13a7e44271f |
Hashes for spector-1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5bc0fe97d1bb1930224645a9321bfff6e636aa42f9b3408b67d95f349dc78819 |
|
MD5 | 599fff096cc66577acf1ebdc54f527ca |
|
BLAKE2b-256 | ccea39e0e6cdaa95094a5d9e9620664e8a04d446125ebf10ba380f02828f441d |
Hashes for spector-1.5-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fcfbc15e6ae8a479c37f1a4581778a160e5cff35a3045f1835488dab06254b82 |
|
MD5 | 3f875465107d1a36a448c61451f9a479 |
|
BLAKE2b-256 | b6dd7b6b50fc59b6975e81d7fb0e5a968794824a6c1e07cbc5ff34df430def9b |
Hashes for spector-1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 042b41e5e50bc28cfde641aef35cd57431a26fd85af74b4f81c88d8f1016f392 |
|
MD5 | 935f4869cec17ed52c88dccdc852b00a |
|
BLAKE2b-256 | 0f5c213603e50347abe30c9bf91f03ea675d2ba9ce9741ed83f9e313b0b56345 |
Hashes for spector-1.5-cp39-cp39-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1f89a8fd4e5b773a9f1ea6059ebe2e2f3dae5f16b5de579cefaf124f4908bf97 |
|
MD5 | 7ff2b63f20207d38e13d67a7bbf24dfc |
|
BLAKE2b-256 | ea4a0a272bbb95b37a0dcf61f6dc5b5bf28267d02520266255ec52607dd67132 |
Hashes for spector-1.5-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e5cddf034698b0475cb0f41d85d7a08ad409ed7d206003e941cab6ff5ad03938 |
|
MD5 | c2d78f2963a9c521701066a4edc17082 |
|
BLAKE2b-256 | 8fa7e7fe977b02f31df75671dfc4f264f1a78d62141effbd1d924b829558f6ae |