Skip to main content

batcharray

CI Nightly Tests Nightly Package Tests Codecov
Documentation Documentation
Code style: black Doc style: google Ruff Doc style: google
PYPI version Python BSD-3-Clause
Downloads Monthly downloads

Overview

batcharray is lightweight library built on top of NumPy to manipulate nested data structure with NumPy arrays. This library provides functions for arrays where the first axis is the batch axis. It also provides functions for arrays representing a batch of sequences where the first axis is the batch axis and the second axis is the sequence axis.

Motivation

Let's imagine you have a batch which is represented by a dictionary with three arrays, and you want to take the first 2 items. batcharray provides the function slice_along_batch that allows to slide all the arrays:

>>> import numpy as np
>>> from batcharray.nested import slice_along_batch
>>> batch = {
...     "a": np.array([[2, 6], [0, 3], [4, 9], [8, 1], [5, 7]]),
...     "b": np.array([4, 3, 2, 1, 0]),
...     "c": np.array([1.0, 2.0, 3.0, 4.0, 5.0]),
... }
>>> slice_along_batch(batch, stop=2)
{'a': array([[2, 6], [0, 3]]), 'b': array([4, 3]), 'c': array([1., 2.])}

Similarly, it is possible to split a batch in multiple batches by using the function split_along_batch:

>>> import numpy as np
>>> from batcharray.nested import split_along_batch
>>> batch = {
...     "a": np.array([[2, 6], [0, 3], [4, 9], [8, 1], [5, 7]]),
...     "b": np.array([4, 3, 2, 1, 0]),
...     "c": np.array([1.0, 2.0, 3.0, 4.0, 5.0]),
... }
>>> split_along_batch(batch, split_size_or_sections=2)
[{'a': array([[2, 6], [0, 3]]), 'b': array([4, 3]), 'c': array([1., 2.])},
 {'a': array([[4, 9], [8, 1]]), 'b': array([2, 1]), 'c': array([3., 4.])},
 {'a': array([[5, 7]]), 'b': array([0]), 'c': array([5.])}]

Please check the documentation to see all the implemented functions.

Features

batcharray provides several modules for different use cases:

  • array: Functions to manipulate single NumPy arrays with batch and sequence dimensions
    • Slicing, indexing, and selection operations
    • Statistical reductions (mean, max, min, etc.)
    • Sorting and permutation operations
    • Cumulative operations (cumsum, cumprod)
    • Support for both regular and masked arrays
  • nested: Functions to manipulate nested data structures (dicts, lists) containing arrays
    • Apply operations to all arrays in a structure simultaneously
    • Maintain relationships between related arrays
    • Mathematical operations (abs, exp, log, trigonometric functions)
    • All operations from array module, but for nested structures
  • computation: Computation models for abstracting array operations
    • Automatic selection of appropriate implementation based on array type
    • Support for regular arrays and masked arrays
    • Extensible for custom array types
  • recursive: Tools for recursively applying functions to nested structures
    • Traverse complex hierarchies of dicts, lists, and tuples
    • Apply transformations to specific types
    • Customizable traversal strategies
  • utils: Utility functions for exploring nested structures
    • Breadth-first search (BFS) for wide structures
    • Depth-first search (DFS) for deep structures
    • Helpful for debugging and validation

Documentation

  • latest (stable): documentation from the latest stable release.
  • main (unstable): documentation associated to the main branch of the repo. This documentation may contain a lot of work-in-progress/outdated/missing parts.

Installation

We highly recommend installing a virtual environment. batcharray can be installed from pip using the following command:

uv pip install batcharray

To make the package as slim as possible, only the minimal packages required to use batcharray are installed. To include all the dependencies, you can use the following command:

uv pip install batcharray[all]

Please check the get started page to see how to install only some specific dependencies or other alternatives to install the library. The following is the corresponding batcharray versions and tested dependencies.

batcharray coola numpy python
main >=0.11,<1.0 >=1.22,<3.0 >=3.10
0.3.0 >=0.11,<1.0 >=1.22,<3.0 >=3.10
0.2.0 >=0.9.1,<1.0 >=1.22,<3.0 >=3.10,<3.15
0.1.0 >=0.8.4,<1.0 >=1.22,<3.0 >=3.9,<3.14
0.0.3 >=0.3,<1.0 >=1.22,<3.0 >=3.9,<3.13
0.0.2 >=0.3,<1.0 >=1.22,<2.0 >=3.9,<3.13
0.0.1 >=0.3,<1.0 >=1.22,<2.0 >=3.9,<3.13

* indicates an optional dependency

Contributing

Please check the instructions in CONTRIBUTING.md.

Suggestions and Communication

Everyone is welcome to contribute to the community. If you have any questions or suggestions, you can submit Github Issues. We will reply to you as soon as possible. Thank you very much.

API stability

:warning: While batcharray is in development stage, no API is guaranteed to be stable from one release to the next. In fact, it is very likely that the API will change multiple times before a stable 1.0.0 release. In practice, this means that upgrading batcharray to a new version will possibly break any code that was using the old version of batcharray.

License

batcharray is licensed under BSD 3-Clause "New" or "Revised" license available in LICENSE file.

Metadata

Release files for batcharray 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for batcharray 0.3.0
File Size Uploaded
batcharray-0.3.0.tar.gz 25.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for batcharray 0.3.0
File Interpreter ABI Platform
batcharray-0.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 62.0 kB

Release files / batcharray-0.3.0.tar.gz

Download URL batcharray-0.3.0.tar.gz
Size 25.4 kB
Tags Source
SHA-256 checksum
How to use checksums
d007303739f04ac2f5aa55216373dcbb46d40ce64198bc8060c8a169bc74895c
BLAKE2b-256 checksum
How to use checksums
1747efb4a5e9fa2cffb910737d0cdacacd8e1992dd41d326a05aad50fde4443a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / batcharray-0.3.0-py3-none-any.whl

Download URL batcharray-0.3.0-py3-none-any.whl
Size 36.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a00fdd64ae80525b4e9cb673302b50151d9f120244297a4e7c486f725d68539c
BLAKE2b-256 checksum
How to use checksums
e67406da6ccb2ad8c22383dd69a4a608987d9edbdbd7dcf385d1b2543869ef9e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

This release

0.3.0 This release

2 release files

0.2.0

2 release files

0.1.0

2 release files

0.0.3

2 release files

0.0.2

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page