Memory efficient stack of multiple 2D sparse arrays.
Installation
Requirements
Python 3.10 or higher
Pip Install
Simply install using pip: pip install sparsestack
First code example
import numpy as np
from sparsestack import StackedSparseArray
# Create some fake data
scores1 = np.random.random((12, 10))
scores1[scores1 < 0.9] = 0 # make "sparse"
scores2 = np.random.random((12, 10))
scores2[scores2 < 0.75] = 0 # make "sparse"
sparsestack = StackedSparseArray(12, 10)
sparsestack.add_dense_matrix(scores1, "scores_1")
# Add second scores and filter
sparsestack.add_dense_matrix(scores2, "scores_2", join_type="left")
# Scores can be accessed using (limited) slicing capabilities
sparsestack[3, 4] # => scores_1 and scores_2 at position row=3, col=4
sparsestack[3, :] # => tuple with row, col, scores for all entries in row=3
sparsestack[:, 2] # => tuple with row, col, scores for all entries in col=2
sparsestack[3, :, 0] # => tuple with row, col, scores_1 for all entries in row=3
sparsestack[3, :, "scores_1"] # => same as the one before
# Scores can also be converted to a dense numpy array:
scores2_after_merge = sparsestack.to_array("scores_2")
Adding data to a sparsestack-array
Sparsestack provides three options to add data to a new layer.
.add_dense_matrix(input_array)Can be used to add all none-zero elements ofinput_arrayto the sparsestack. Depending on the chosenjoin_typeeither all such values will be added (join_type="outer"orjoin_type="right"), or only those which are already present in underlying layers ("left" or "inner" join)..add_sparse_matrix(input_coo_matrix)This method will expect a COO-style matrix (e.g. scipy) which has attributes .row, .col and .data. The join type can again be specified usingjoin_type..add_sparse_data(row, col, data)This essentially does the same as.add_sparse_matrix(input_coo_matrix)but might in some cases be a bit more flexible because row, col and data are separate input arguments.
Accessing data from sparsestack-array
The collected sparse data can be accessed in multiple ways.
- Slicing.
sparsestackallows multiple types of slicing (see also code example above).
sparsestack[3, 4] # => tuple with all scores at position row=3, col=4
sparsestack[3, :] # => tuple with row, col, scores for all entries in row=3
sparsestack[:, 2] # => tuple with row, col, scores for all entries in col=2
sparsestack[3, :, 0] # => tuple with row, col, scores_1 for all entries in row=3
sparsestack[3, :, "scores_1"] # => same as the one before
.to_array()Creates and returns a dense numpy array of size.shape. Can also be used to create a dense numpy array of only a single layer when used like.to_array(name="layerX").
Carefull: Obviously by converting to a dense array, the sparse nature will be lost and all empty positions in the stack will be filled with zeros..to_coo(name="layerX")Returns a scipy sparse COO-matrix of the specified layer.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
sparsestack-0.7.1.tar.gz
(9.4 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file sparsestack-0.7.1.tar.gz.
File metadata
- Download URL: sparsestack-0.7.1.tar.gz
- Upload date:
- Size: 9.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
poetry/2.4.1 CPython/3.11.0 Linux/6.17.0-1015-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
13c2edea1ad8be376e9fa28ce49231ceded9cd114c06d1335a74e0b96a2c6df9
|
|
| MD5 |
9b698e1964ffb500ac0fe6fceaf9e469
|
|
| BLAKE2b-256 |
e611a98d17a1852b5fb3eb320049eceb94b975f70f2a58cbfb6c320b143642fa
|
File details
Details for the file sparsestack-0.7.1-py3-none-any.whl.
File metadata
- Download URL: sparsestack-0.7.1-py3-none-any.whl
- Upload date:
- Size: 9.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
poetry/2.4.1 CPython/3.11.0 Linux/6.17.0-1015-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
17d588732694873b38fa530b5d5ca8384a03265bfe994373d9a36ffa0d0d6065
|
|
| MD5 |
40a9ed82923554b45c292cbdf17ac0b6
|
|
| BLAKE2b-256 |
a0d7e4ca547cd1ec810f27df4b649369275f2135615e9a11bc643f799eb09c6c
|