This package adds cleaner typing for numpy arrays. It
has been designed for deep learning and data processing tasks which generally
need a lot of numpy arrays of large dimensions.
To use the library modify all your import with :
```python
from numpy_typing import np, ax
```
The modified version of numpy imported there contain sumplementary annotations in order to have smart and automatic inferred annotation.
> Remark : This import load the real Numpy library. As Numpy-Typing do not use wrapper, every Numpy functions are directly called without intermediate code. Hence Numpy-Typing is as fast as Numpy.
You can then use new annotation like:
```python
float32Array3d:np.float32_3d[ax.batch, ax.sample, ax.feature] = np.zeros((3, 3, 3))
v = float32Array3d[0, 0, 0] # v automatically inferred as float32
```
The library add new array_types annotation:
- np.float32_(***n***)d
- np.float64_(***n***)d
- np.int32_(***n***)d
- np.int64_(***n***)d
- np.int8_(***n***)d
- np.bool_(***n***)d
- np.str_(***n***)d
Where ***n*** is the number of dimension of the array. The value of ***n*** is for instance only supported between [1, 4].
Moreover, as the library dosen't support yet all the numpy types, you can also use the generic type
```np.array_(1-4)d[dtype, axis1, ...]```
Then you should specify for each dimension the role of the dimension:
- ax.batch: The axis select the nth batch
- ax.sample: The axis select the nth sample of the batch
- ax.feature: The axis contain features
- ax.time: The axis represent the time
- ax.label: the axis contain labels
- ax.x: The axis represent the x coordinate
- ax.y: The axis represent the y coordinate
- ax.z: The axis represent the z coordinate
- ax.rgb: the axis contain a rgb value [0] for red, [1] for green and [2] for blue
- ax.rgba: the axis contain a rgba value [0] for red, [1] for green, [2] for blue and [3] for alpha
Here is an example of useful smart annotation:
```python
a:np.float32_1d[ax.time] = np.zeros((64))
b:np.float32_1d[ax.time] = np.zeros((64))
c = np.concatenate([a, b])
# automatically infer the type of c as np.float32_1d[ax.time]
```
If you want the library to support more types, more numpy functions or if you have any suggestion, feel free to open an issue on our [github](https://github.com/melpiro/numpy-typing).
Raw data
{
"_id": null,
"home_page": null,
"name": "numpy-typing",
"maintainer": null,
"docs_url": null,
"requires_python": null,
"maintainer_email": null,
"keywords": "python, numpy, typing, type hinting",
"author": "Pirolley Melvyn",
"author_email": null,
"download_url": "https://files.pythonhosted.org/packages/b0/71/0e00b8ea4d0a6b6ec89ee16b68225fbe68e390e43e5e49c4532d9b7e8165/numpy_typing-1.1.1.tar.gz",
"platform": null,
"description": "\nThis package adds cleaner typing for numpy arrays. It\nhas been designed for deep learning and data processing tasks which generally\nneed a lot of numpy arrays of large dimensions.\n\n\nTo use the library modify all your import with :\n```python\nfrom numpy_typing import np, ax\n```\n\nThe modified version of numpy imported there contain sumplementary annotations in order to have smart and automatic inferred annotation.\n\n> Remark : This import load the real Numpy library. As Numpy-Typing do not use wrapper, every Numpy functions are directly called without intermediate code. Hence Numpy-Typing is as fast as Numpy.\n\n\nYou can then use new annotation like:\n```python\nfloat32Array3d:np.float32_3d[ax.batch, ax.sample, ax.feature] = np.zeros((3, 3, 3))\nv = float32Array3d[0, 0, 0] # v automatically inferred as float32\n```\nThe library add new array_types annotation:\n- np.float32_(***n***)d\n- np.float64_(***n***)d\n- np.int32_(***n***)d\n- np.int64_(***n***)d\n- np.int8_(***n***)d\n- np.bool_(***n***)d\n- np.str_(***n***)d\n\nWhere ***n*** is the number of dimension of the array. The value of ***n*** is for instance only supported between [1, 4].\n\nMoreover, as the library dosen't support yet all the numpy types, you can also use the generic type\n```np.array_(1-4)d[dtype, axis1, ...]```\n\nThen you should specify for each dimension the role of the dimension:\n- ax.batch: The axis select the nth batch\n- ax.sample: The axis select the nth sample of the batch\n- ax.feature: The axis contain features\n- ax.time: The axis represent the time\n- ax.label: the axis contain labels\n- ax.x: The axis represent the x coordinate\n- ax.y: The axis represent the y coordinate\n- ax.z: The axis represent the z coordinate\n- ax.rgb: the axis contain a rgb value [0] for red, [1] for green and [2] for blue\n- ax.rgba: the axis contain a rgba value [0] for red, [1] for green, [2] for blue and [3] for alpha\n\nHere is an example of useful smart annotation:\n```python\na:np.float32_1d[ax.time] = np.zeros((64))\nb:np.float32_1d[ax.time] = np.zeros((64))\nc = np.concatenate([a, b])\n# automatically infer the type of c as np.float32_1d[ax.time]\n```\n\nIf you want the library to support more types, more numpy functions or if you have any suggestion, feel free to open an issue on our [github](https://github.com/melpiro/numpy-typing).\n\n\n\n\n\n\n\n\n\n\n\n\n",
"bugtrack_url": null,
"license": null,
"summary": "Improved numpy typing anotations",
"version": "1.1.1",
"project_urls": null,
"split_keywords": [
"python",
" numpy",
" typing",
" type hinting"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "b0710e00b8ea4d0a6b6ec89ee16b68225fbe68e390e43e5e49c4532d9b7e8165",
"md5": "2b0978d465e8a70cf510cdd6f6a5fb68",
"sha256": "023005afafbc72d84b450d23a2f110cfca255bddd1ef55aa8ef87207a9dbf83c"
},
"downloads": -1,
"filename": "numpy_typing-1.1.1.tar.gz",
"has_sig": false,
"md5_digest": "2b0978d465e8a70cf510cdd6f6a5fb68",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 6922,
"upload_time": "2024-10-14T09:00:25",
"upload_time_iso_8601": "2024-10-14T09:00:25.842805Z",
"url": "https://files.pythonhosted.org/packages/b0/71/0e00b8ea4d0a6b6ec89ee16b68225fbe68e390e43e5e49c4532d9b7e8165/numpy_typing-1.1.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-10-14 09:00:25",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "numpy-typing"
}