Automatically and minimally expanding tensor for __setitem()__ operations based on NumPy.
Project description
dynamic-tensor
(This package is still developing and not formally tested. Please report any potential issues. Constantly reshaping the tensor could be inefficient and not suitable for high-performance computing)
A Python package for automatically and minimally expanding tensors for __setitem()__
operations based on NumPy. You don't need to worry about tensor shape initialization, reshape()
, or expand_dims()
anymore as if the tensor has an infinite size. Both basic (integer, slice, np.newaxis
, ellipsis) and advanced (integer & boolean array) indexing are supported (refer to Indexing on ndarrays).
You can also configure a DynamicTensor
to adapt the tensor type to the new value to avoid astype()
(enabled by default).
Usage
Requires Python 3.6+ and NumPy 1.16+.
pip install dynamic-tensor
# or using conda
conda install dynamic-tensor
Or install from source:
git clone https://github.com/eurekazheng/dynamic-tensor.git
cd dynamic-tensor
# build the package
python setup.py sdist bdist_wheel
pip install -e .
Usage:
import densor
d = densor.dt([[1, 2], [3, 4]])
d[2, 1:3, [2, 3]] = 5.6
print(d, d.shape)
# Expected output:
# [[[1. 0. 0. 0. ]
# [2. 0. 0. 0. ]
# [0. 0. 0. 0. ]]
#
# [[3. 0. 0. 0. ]
# [4. 0. 0. 0. ]
# [0. 0. 0. 0. ]]
#
# [[0. 0. 0. 0. ]
# [0. 0. 5.6 5.6]
# [0. 0. 5.6 5.6]]] (3, 3, 4)
# Helper: convert a list to tensor when possible
densor.tensorify([[1, 2], [3, 4]]) # return ndarray
densor.tensorify([[1, 2], [3, 4, 5]]) # return False
Rationale
The underlying data structure of densor.dt
is numpy.ndarray
_a
. Upon a __setitem(idx, val)__
call, the following preprocessing is done:
- Determine the target shape.
- Based on target shape, (potentially) expand the dimension of
_a
. - (Optional) Based on
val
dtype, (potentially) change the dtype of_a
. - Based on target shape, (potentially) change the size of
_a
at each dimension.
Refer to src/densor.py
for more details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file dynamic-tensor-0.0.2.tar.gz
.
File metadata
- Download URL: dynamic-tensor-0.0.2.tar.gz
- Upload date:
- Size: 4.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.7.11
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | eab6b95099b52a7fa8e11068687a6159474e4db854504ae99c465bf9d111765b |
|
MD5 | 351632cf6522df276a8cc4ff2c8495d7 |
|
BLAKE2b-256 | de96e096794152c8a8a516f67c13b837e56aa31ed0b08c049e8000f129f072e3 |
File details
Details for the file dynamic_tensor-0.0.2-py3-none-any.whl
.
File metadata
- Download URL: dynamic_tensor-0.0.2-py3-none-any.whl
- Upload date:
- Size: 4.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.7.11
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | aecd3e3a57009a1765601b47aa59fac5ebb81982f614bd81d85ff53ed271abfc |
|
MD5 | bb288f3b3d0afafe17b0564bb2320011 |
|
BLAKE2b-256 | 5dff147f056dc1642d195654a9b0d2ca58fcbb30ab5a10d1edb19f803153c358 |