kwarray


Namekwarray JSON
Version 0.6.18 PyPI version JSON
download
home_pagehttps://gitlab.kitware.com/computer-vision/kwarray
SummaryThe kwarray module
upload_time2024-03-20 02:41:51
maintainerNone
docs_urlNone
authorKitware Inc., Jon Crall
requires_python>=3.6
licenseApache 2
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            The Kitware Array Module
========================

.. # TODO Get CI services running on gitlab

|GitlabCIPipeline| |GitlabCICoverage| |Appveyor| |Pypi| |Downloads| |ReadTheDocs|


+------------------+-------------------------------------------------------+
| Read the docs    | https://kwarray.readthedocs.io                        |
+------------------+-------------------------------------------------------+
| Gitlab (main)    | https://gitlab.kitware.com/computer-vision/kwarray    |
+------------------+-------------------------------------------------------+
| Github (mirror)  | https://github.com/Kitware/kwarray                    |
+------------------+-------------------------------------------------------+
| Pypi             | https://pypi.org/project/kwarray                      |
+------------------+-------------------------------------------------------+

The main webpage for this project is: https://gitlab.kitware.com/computer-vision/kwarray

The ``kwarray`` module implements a small set of pure-python extensions to numpy and torch.

The ``kwarray`` module started as extensions for numpy + a simplified
pandas-like DataFrame object with much faster item row and column access. But
it also include an ArrayAPI, which is a wrapper that allows 100%
interoperability between torch and numpy. It also contains a few algorithms
like setcover and mincost_assignment.


The top-level API is:

.. code:: python

    from kwarray.arrayapi import ArrayAPI, dtype_info
    from .algo_assignment import (maxvalue_assignment, mincost_assignment,
                                  mindist_assignment,)
    from .algo_setcover import (setcover,)
    from .dataframe_light import (DataFrameArray, DataFrameLight, LocLight,)
    from .fast_rand import (standard_normal, standard_normal32, standard_normal64,
                            uniform, uniform32,)
    from .util_averages import (RunningStats, stats_dict,)
    from .util_groups import (apply_grouping, group_consecutive,
                              group_consecutive_indices, group_indices,
                              group_items,)
    from .util_misc import (FlatIndexer,)
    from .util_numpy import (arglexmax, argmaxima, argminima, atleast_nd, boolmask,
                             isect_flags, iter_reduce_ufunc, normalize,)
    from .util_random import (ensure_rng, random_combinations, random_product,
                              seed_global, shuffle,)
    from .util_slices import (embed_slice, padded_slice,)
    from .util_slider import (SlidingWindow, Stitcher,)
    from .util_torch import (one_hot_embedding, one_hot_lookup,)



The ArrayAPI
------------

On of the most useful features in ``kwarray`` is the ``kwarray.ArrayAPI`` --- a
class that helps bridge between numpy and torch. This class consists of static
methods that implement part of the numpy API and operate equivalently on either
torch.Tensor or numpy.ndarray objects.

This works because every function call checks if the input is a torch tensor or
a numpy array and then takes the appropriate action.

As you can imagine, it can be slow to validate your inputs on each function
call. Therefore the recommended way of using the array API is via the
``kwarray.ArrayAPI.impl`` function. This function does the check once and then
returns another object that directly performs the correct operations on
subsequent data items of the same type.

The following example demonstrates both modes of usage.

.. code:: python

        import torch
        import numpy as np
        data1 = torch.rand(10, 10)
        data2 = data1.numpy()
        # Method 1: grab the appropriate sub-impl
        impl1 = ArrayAPI.impl(data1)
        impl2 = ArrayAPI.impl(data2)
        result1 = impl1.sum(data1, axis=0)
        result2 = impl2.sum(data2, axis=0)
        assert np.all(impl1.numpy(result1) == impl2.numpy(result2))
        # Method 2: choose the impl on the fly
        result1 = ArrayAPI.sum(data1, axis=0)
        result2 = ArrayAPI.sum(data2, axis=0)
        assert np.all(ArrayAPI.numpy(result1) == ArrayAPI.numpy(result2))


Other Notes:
------------

The ``kwarray.ensure_rng`` function helps you properly maintain and control local
seeded random number generation. This means that you wont clobber the random
state of another library / get your random state clobbered.

``DataFrameArray`` and ``DataFrameLight`` implement a subset of the pandas API.
They are less powerful, but orders of magnitude faster. The main drawback is
that you lose ``loc``, but ``iloc`` is available.

``uniform32`` and ``standard_normal32`` are faster 32-bit random number generators
(compared to their 64-bit numpy counterparts).

``mincost_assignment`` is the Munkres / Hungarian algorithm. It solves the
assignment problem.

``setcover`` - solves the minimum weighted set cover problem using either an
approximate or an exact solution.

``one_hot_embedding`` is a fast numpy / torch way to perform the often needed OHE
deep-learning trick.

``group_items`` is a fast way to group a numpy array by another numpy array.  For
fine grained control we also expose ``group_indices``, which groups the indices
of a numpy array, and ``apply_grouping``, which partitions a numpy array by those
indices.

``boolmask`` effectively inverts ``np.where``.

Usefulness:
-----------

This is the frequency that I've used various components of this library with in
my projects:


======================================================================================================================================================== ================
 Function name                                                                                                                                                 Usefulness
======================================================================================================================================================== ================
`kwarray.ensure_rng <https://kwarray.readthedocs.io/en/latest/kwarray.util_random.html#kwarray.util_random.ensure_rng>`__                                             239
`kwarray.ArrayAPI <https://kwarray.readthedocs.io/en/latest/kwarray.arrayapi.html#kwarray.arrayapi.ArrayAPI>`__                                                       148
`kwarray.atleast_nd <https://kwarray.readthedocs.io/en/latest/kwarray.util_numpy.html#kwarray.util_numpy.atleast_nd>`__                                                50
`kwarray.DataFrameArray <https://kwarray.readthedocs.io/en/latest/kwarray.dataframe_light.html#kwarray.dataframe_light.DataFrameArray>`__                              43
`kwarray.group_indices <https://kwarray.readthedocs.io/en/latest/kwarray.util_groups.html#kwarray.util_groups.group_indices>`__                                        40
`kwarray.stats_dict <https://kwarray.readthedocs.io/en/latest/kwarray.util_averages.html#kwarray.util_averages.stats_dict>`__                                          34
`kwarray.normalize <https://kwarray.readthedocs.io/en/latest/kwarray.util_robust.html#kwarray.util_robust.normalize>`__                                                28
`kwarray.embed_slice <https://kwarray.readthedocs.io/en/latest/kwarray.util_slices.html#kwarray.util_slices.embed_slice>`__                                            21
`kwarray.shuffle <https://kwarray.readthedocs.io/en/latest/kwarray.util_random.html#kwarray.util_random.shuffle>`__                                                    17
`kwarray.padded_slice <https://kwarray.readthedocs.io/en/latest/kwarray.util_slices.html#kwarray.util_slices.padded_slice>`__                                          14
`kwarray.SlidingWindow <https://kwarray.readthedocs.io/en/latest/kwarray.util_slider.html#kwarray.util_slider.SlidingWindow>`__                                        14
`kwarray.isect_flags <https://kwarray.readthedocs.io/en/latest/kwarray.util_numpy.html#kwarray.util_numpy.isect_flags>`__                                              12
`kwarray.RunningStats <https://kwarray.readthedocs.io/en/latest/kwarray.util_averages.html#kwarray.util_averages.RunningStats>`__                                      12
`kwarray.standard_normal <https://kwarray.readthedocs.io/en/latest/kwarray.fast_rand.html#kwarray.fast_rand.standard_normal>`__                                        10
`kwarray.setcover <https://kwarray.readthedocs.io/en/latest/kwarray.algo_setcover.html#kwarray.algo_setcover.setcover>`__                                               8
`kwarray.robust_normalize <https://kwarray.readthedocs.io/en/latest/kwarray.util_robust.html#kwarray.util_robust.robust_normalize>`__                                   7
`kwarray.boolmask <https://kwarray.readthedocs.io/en/latest/kwarray.util_numpy.html#kwarray.util_numpy.boolmask>`__                                                     7
`kwarray.one_hot_embedding <https://kwarray.readthedocs.io/en/latest/kwarray.util_torch.html#kwarray.util_torch.one_hot_embedding>`__                                   7
`kwarray.uniform <https://kwarray.readthedocs.io/en/latest/kwarray.fast_rand.html#kwarray.fast_rand.uniform>`__                                                         6
`kwarray.find_robust_normalizers <https://kwarray.readthedocs.io/en/latest/kwarray.util_robust.html#kwarray.util_robust.find_robust_normalizers>`__                     6
`kwarray.Stitcher <https://kwarray.readthedocs.io/en/latest/kwarray.util_slider.html#kwarray.util_slider.Stitcher>`__                                                   6
`kwarray.apply_grouping <https://kwarray.readthedocs.io/en/latest/kwarray.util_groups.html#kwarray.util_groups.apply_grouping>`__                                       6
`kwarray.group_consecutive <https://kwarray.readthedocs.io/en/latest/kwarray.util_groups.html#kwarray.util_groups.group_consecutive>`__                                 5
`kwarray.argmaxima <https://kwarray.readthedocs.io/en/latest/kwarray.util_numpy.html#kwarray.util_numpy.argmaxima>`__                                                   4
`kwarray.seed_global <https://kwarray.readthedocs.io/en/latest/kwarray.util_random.html#kwarray.util_random.seed_global>`__                                             4
`kwarray.FlatIndexer <https://kwarray.readthedocs.io/en/latest/kwarray.util_misc.html#kwarray.util_misc.FlatIndexer>`__                                                 3
`kwarray.group_items <https://kwarray.readthedocs.io/en/latest/kwarray.util_groups.html#kwarray.util_groups.group_items>`__                                             3
`kwarray.arglexmax <https://kwarray.readthedocs.io/en/latest/kwarray.util_numpy.html#kwarray.util_numpy.arglexmax>`__                                                   2
`kwarray.DataFrameLight <https://kwarray.readthedocs.io/en/latest/kwarray.dataframe_light.html#kwarray.dataframe_light.DataFrameLight>`__                               2
`kwarray.group_consecutive_indices <https://kwarray.readthedocs.io/en/latest/kwarray.util_groups.html#kwarray.util_groups.group_consecutive_indices>`__                 1
`kwarray.equal_with_nan <https://kwarray.readthedocs.io/en/latest/kwarray.util_numpy.html#kwarray.util_numpy.equal_with_nan>`__                                         1
`kwarray.dtype_info <https://kwarray.readthedocs.io/en/latest/kwarray.arrayapi.html#kwarray.arrayapi.dtype_info>`__                                                     1
`kwarray.unique_rows <https://kwarray.readthedocs.io/en/latest/kwarray.util_numpy.html#kwarray.util_numpy.unique_rows>`__                                               0
`kwarray.uniform32 <https://kwarray.readthedocs.io/en/latest/kwarray.fast_rand.html#kwarray.fast_rand.uniform32>`__                                                     0
`kwarray.standard_normal64 <https://kwarray.readthedocs.io/en/latest/kwarray.fast_rand.html#kwarray.fast_rand.standard_normal64>`__                                     0
`kwarray.standard_normal32 <https://kwarray.readthedocs.io/en/latest/kwarray.fast_rand.html#kwarray.fast_rand.standard_normal32>`__                                     0
`kwarray.random_product <https://kwarray.readthedocs.io/en/latest/kwarray.util_random.html#kwarray.util_random.random_product>`__                                       0
`kwarray.random_combinations <https://kwarray.readthedocs.io/en/latest/kwarray.util_random.html#kwarray.util_random.random_combinations>`__                             0
`kwarray.one_hot_lookup <https://kwarray.readthedocs.io/en/latest/kwarray.util_torch.html#kwarray.util_torch.one_hot_lookup>`__                                         0
`kwarray.mindist_assignment <https://kwarray.readthedocs.io/en/latest/kwarray.algo_assignment.html#kwarray.algo_assignment.mindist_assignment>`__                       0
`kwarray.mincost_assignment <https://kwarray.readthedocs.io/en/latest/kwarray.algo_assignment.html#kwarray.algo_assignment.mincost_assignment>`__                       0
`kwarray.maxvalue_assignment <https://kwarray.readthedocs.io/en/latest/kwarray.algo_assignment.html#kwarray.algo_assignment.maxvalue_assignment>`__                     0
`kwarray.iter_reduce_ufunc <https://kwarray.readthedocs.io/en/latest/kwarray.util_numpy.html#kwarray.util_numpy.iter_reduce_ufunc>`__                                   0
`kwarray.generalized_logistic <https://kwarray.readthedocs.io/en/latest/kwarray.util_numpy.html#kwarray.util_numpy.generalized_logistic>`__                             0
`kwarray.argminima <https://kwarray.readthedocs.io/en/latest/kwarray.util_numpy.html#kwarray.util_numpy.argminima>`__                                                   0
`kwarray.apply_embedded_slice <https://kwarray.readthedocs.io/en/latest/kwarray.util_slices.html#kwarray.util_slices.apply_embedded_slice>`__                           0
`kwarray.NoSupportError <https://kwarray.readthedocs.io/en/latest/kwarray.util_averages.html#kwarray.util_averages.NoSupportError>`__                                   0
`kwarray.LocLight <https://kwarray.readthedocs.io/en/latest/kwarray.dataframe_light.html#kwarray.dataframe_light.LocLight>`__                                           0
======================================================================================================================================================== ================



.. |Pypi| image:: https://img.shields.io/pypi/v/kwarray.svg
   :target: https://pypi.python.org/pypi/kwarray

.. |Downloads| image:: https://img.shields.io/pypi/dm/kwarray.svg
   :target: https://pypistats.org/packages/kwarray

.. |ReadTheDocs| image:: https://readthedocs.org/projects/kwarray/badge/?version=release
    :target: https://kwarray.readthedocs.io/en/release/

.. # See: https://ci.appveyor.com/project/jon.crall/kwarray/settings/badges
.. |Appveyor| image:: https://ci.appveyor.com/api/projects/status/py3s2d6tyfjc8lm3/branch/main?svg=true
   :target: https://ci.appveyor.com/project/jon.crall/kwarray/branch/main

.. |GitlabCIPipeline| image:: https://gitlab.kitware.com/computer-vision/kwarray/badges/main/pipeline.svg
   :target: https://gitlab.kitware.com/computer-vision/kwarray/-/jobs

.. |GitlabCICoverage| image:: https://gitlab.kitware.com/computer-vision/kwarray/badges/main/coverage.svg
    :target: https://gitlab.kitware.com/computer-vision/kwarray/-/commits/main

            

Raw data

            {
    "_id": null,
    "home_page": "https://gitlab.kitware.com/computer-vision/kwarray",
    "name": "kwarray",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.6",
    "maintainer_email": null,
    "keywords": null,
    "author": "Kitware Inc., Jon Crall",
    "author_email": "kitware@kitware.com, jon.crall@kitware.com",
    "download_url": null,
    "platform": null,
    "description": "The Kitware Array Module\n========================\n\n.. # TODO Get CI services running on gitlab\n\n|GitlabCIPipeline| |GitlabCICoverage| |Appveyor| |Pypi| |Downloads| |ReadTheDocs|\n\n\n+------------------+-------------------------------------------------------+\n| Read the docs    | https://kwarray.readthedocs.io                        |\n+------------------+-------------------------------------------------------+\n| Gitlab (main)    | https://gitlab.kitware.com/computer-vision/kwarray    |\n+------------------+-------------------------------------------------------+\n| Github (mirror)  | https://github.com/Kitware/kwarray                    |\n+------------------+-------------------------------------------------------+\n| Pypi             | https://pypi.org/project/kwarray                      |\n+------------------+-------------------------------------------------------+\n\nThe main webpage for this project is: https://gitlab.kitware.com/computer-vision/kwarray\n\nThe ``kwarray`` module implements a small set of pure-python extensions to numpy and torch.\n\nThe ``kwarray`` module started as extensions for numpy + a simplified\npandas-like DataFrame object with much faster item row and column access. But\nit also include an ArrayAPI, which is a wrapper that allows 100%\ninteroperability between torch and numpy. It also contains a few algorithms\nlike setcover and mincost_assignment.\n\n\nThe top-level API is:\n\n.. code:: python\n\n    from kwarray.arrayapi import ArrayAPI, dtype_info\n    from .algo_assignment import (maxvalue_assignment, mincost_assignment,\n                                  mindist_assignment,)\n    from .algo_setcover import (setcover,)\n    from .dataframe_light import (DataFrameArray, DataFrameLight, LocLight,)\n    from .fast_rand import (standard_normal, standard_normal32, standard_normal64,\n                            uniform, uniform32,)\n    from .util_averages import (RunningStats, stats_dict,)\n    from .util_groups import (apply_grouping, group_consecutive,\n                              group_consecutive_indices, group_indices,\n                              group_items,)\n    from .util_misc import (FlatIndexer,)\n    from .util_numpy import (arglexmax, argmaxima, argminima, atleast_nd, boolmask,\n                             isect_flags, iter_reduce_ufunc, normalize,)\n    from .util_random import (ensure_rng, random_combinations, random_product,\n                              seed_global, shuffle,)\n    from .util_slices import (embed_slice, padded_slice,)\n    from .util_slider import (SlidingWindow, Stitcher,)\n    from .util_torch import (one_hot_embedding, one_hot_lookup,)\n\n\n\nThe ArrayAPI\n------------\n\nOn of the most useful features in ``kwarray`` is the ``kwarray.ArrayAPI`` --- a\nclass that helps bridge between numpy and torch. This class consists of static\nmethods that implement part of the numpy API and operate equivalently on either\ntorch.Tensor or numpy.ndarray objects.\n\nThis works because every function call checks if the input is a torch tensor or\na numpy array and then takes the appropriate action.\n\nAs you can imagine, it can be slow to validate your inputs on each function\ncall. Therefore the recommended way of using the array API is via the\n``kwarray.ArrayAPI.impl`` function. This function does the check once and then\nreturns another object that directly performs the correct operations on\nsubsequent data items of the same type.\n\nThe following example demonstrates both modes of usage.\n\n.. code:: python\n\n        import torch\n        import numpy as np\n        data1 = torch.rand(10, 10)\n        data2 = data1.numpy()\n        # Method 1: grab the appropriate sub-impl\n        impl1 = ArrayAPI.impl(data1)\n        impl2 = ArrayAPI.impl(data2)\n        result1 = impl1.sum(data1, axis=0)\n        result2 = impl2.sum(data2, axis=0)\n        assert np.all(impl1.numpy(result1) == impl2.numpy(result2))\n        # Method 2: choose the impl on the fly\n        result1 = ArrayAPI.sum(data1, axis=0)\n        result2 = ArrayAPI.sum(data2, axis=0)\n        assert np.all(ArrayAPI.numpy(result1) == ArrayAPI.numpy(result2))\n\n\nOther Notes:\n------------\n\nThe ``kwarray.ensure_rng`` function helps you properly maintain and control local\nseeded random number generation. This means that you wont clobber the random\nstate of another library / get your random state clobbered.\n\n``DataFrameArray`` and ``DataFrameLight`` implement a subset of the pandas API.\nThey are less powerful, but orders of magnitude faster. The main drawback is\nthat you lose ``loc``, but ``iloc`` is available.\n\n``uniform32`` and ``standard_normal32`` are faster 32-bit random number generators\n(compared to their 64-bit numpy counterparts).\n\n``mincost_assignment`` is the Munkres / Hungarian algorithm. It solves the\nassignment problem.\n\n``setcover`` - solves the minimum weighted set cover problem using either an\napproximate or an exact solution.\n\n``one_hot_embedding`` is a fast numpy / torch way to perform the often needed OHE\ndeep-learning trick.\n\n``group_items`` is a fast way to group a numpy array by another numpy array.  For\nfine grained control we also expose ``group_indices``, which groups the indices\nof a numpy array, and ``apply_grouping``, which partitions a numpy array by those\nindices.\n\n``boolmask`` effectively inverts ``np.where``.\n\nUsefulness:\n-----------\n\nThis is the frequency that I've used various components of this library with in\nmy projects:\n\n\n======================================================================================================================================================== ================\n Function name                                                                                                                                                 Usefulness\n======================================================================================================================================================== ================\n`kwarray.ensure_rng <https://kwarray.readthedocs.io/en/latest/kwarray.util_random.html#kwarray.util_random.ensure_rng>`__                                             239\n`kwarray.ArrayAPI <https://kwarray.readthedocs.io/en/latest/kwarray.arrayapi.html#kwarray.arrayapi.ArrayAPI>`__                                                       148\n`kwarray.atleast_nd <https://kwarray.readthedocs.io/en/latest/kwarray.util_numpy.html#kwarray.util_numpy.atleast_nd>`__                                                50\n`kwarray.DataFrameArray <https://kwarray.readthedocs.io/en/latest/kwarray.dataframe_light.html#kwarray.dataframe_light.DataFrameArray>`__                              43\n`kwarray.group_indices <https://kwarray.readthedocs.io/en/latest/kwarray.util_groups.html#kwarray.util_groups.group_indices>`__                                        40\n`kwarray.stats_dict <https://kwarray.readthedocs.io/en/latest/kwarray.util_averages.html#kwarray.util_averages.stats_dict>`__                                          34\n`kwarray.normalize <https://kwarray.readthedocs.io/en/latest/kwarray.util_robust.html#kwarray.util_robust.normalize>`__                                                28\n`kwarray.embed_slice <https://kwarray.readthedocs.io/en/latest/kwarray.util_slices.html#kwarray.util_slices.embed_slice>`__                                            21\n`kwarray.shuffle <https://kwarray.readthedocs.io/en/latest/kwarray.util_random.html#kwarray.util_random.shuffle>`__                                                    17\n`kwarray.padded_slice <https://kwarray.readthedocs.io/en/latest/kwarray.util_slices.html#kwarray.util_slices.padded_slice>`__                                          14\n`kwarray.SlidingWindow <https://kwarray.readthedocs.io/en/latest/kwarray.util_slider.html#kwarray.util_slider.SlidingWindow>`__                                        14\n`kwarray.isect_flags <https://kwarray.readthedocs.io/en/latest/kwarray.util_numpy.html#kwarray.util_numpy.isect_flags>`__                                              12\n`kwarray.RunningStats <https://kwarray.readthedocs.io/en/latest/kwarray.util_averages.html#kwarray.util_averages.RunningStats>`__                                      12\n`kwarray.standard_normal <https://kwarray.readthedocs.io/en/latest/kwarray.fast_rand.html#kwarray.fast_rand.standard_normal>`__                                        10\n`kwarray.setcover <https://kwarray.readthedocs.io/en/latest/kwarray.algo_setcover.html#kwarray.algo_setcover.setcover>`__                                               8\n`kwarray.robust_normalize <https://kwarray.readthedocs.io/en/latest/kwarray.util_robust.html#kwarray.util_robust.robust_normalize>`__                                   7\n`kwarray.boolmask <https://kwarray.readthedocs.io/en/latest/kwarray.util_numpy.html#kwarray.util_numpy.boolmask>`__                                                     7\n`kwarray.one_hot_embedding <https://kwarray.readthedocs.io/en/latest/kwarray.util_torch.html#kwarray.util_torch.one_hot_embedding>`__                                   7\n`kwarray.uniform <https://kwarray.readthedocs.io/en/latest/kwarray.fast_rand.html#kwarray.fast_rand.uniform>`__                                                         6\n`kwarray.find_robust_normalizers <https://kwarray.readthedocs.io/en/latest/kwarray.util_robust.html#kwarray.util_robust.find_robust_normalizers>`__                     6\n`kwarray.Stitcher <https://kwarray.readthedocs.io/en/latest/kwarray.util_slider.html#kwarray.util_slider.Stitcher>`__                                                   6\n`kwarray.apply_grouping <https://kwarray.readthedocs.io/en/latest/kwarray.util_groups.html#kwarray.util_groups.apply_grouping>`__                                       6\n`kwarray.group_consecutive <https://kwarray.readthedocs.io/en/latest/kwarray.util_groups.html#kwarray.util_groups.group_consecutive>`__                                 5\n`kwarray.argmaxima <https://kwarray.readthedocs.io/en/latest/kwarray.util_numpy.html#kwarray.util_numpy.argmaxima>`__                                                   4\n`kwarray.seed_global <https://kwarray.readthedocs.io/en/latest/kwarray.util_random.html#kwarray.util_random.seed_global>`__                                             4\n`kwarray.FlatIndexer <https://kwarray.readthedocs.io/en/latest/kwarray.util_misc.html#kwarray.util_misc.FlatIndexer>`__                                                 3\n`kwarray.group_items <https://kwarray.readthedocs.io/en/latest/kwarray.util_groups.html#kwarray.util_groups.group_items>`__                                             3\n`kwarray.arglexmax <https://kwarray.readthedocs.io/en/latest/kwarray.util_numpy.html#kwarray.util_numpy.arglexmax>`__                                                   2\n`kwarray.DataFrameLight <https://kwarray.readthedocs.io/en/latest/kwarray.dataframe_light.html#kwarray.dataframe_light.DataFrameLight>`__                               2\n`kwarray.group_consecutive_indices <https://kwarray.readthedocs.io/en/latest/kwarray.util_groups.html#kwarray.util_groups.group_consecutive_indices>`__                 1\n`kwarray.equal_with_nan <https://kwarray.readthedocs.io/en/latest/kwarray.util_numpy.html#kwarray.util_numpy.equal_with_nan>`__                                         1\n`kwarray.dtype_info <https://kwarray.readthedocs.io/en/latest/kwarray.arrayapi.html#kwarray.arrayapi.dtype_info>`__                                                     1\n`kwarray.unique_rows <https://kwarray.readthedocs.io/en/latest/kwarray.util_numpy.html#kwarray.util_numpy.unique_rows>`__                                               0\n`kwarray.uniform32 <https://kwarray.readthedocs.io/en/latest/kwarray.fast_rand.html#kwarray.fast_rand.uniform32>`__                                                     0\n`kwarray.standard_normal64 <https://kwarray.readthedocs.io/en/latest/kwarray.fast_rand.html#kwarray.fast_rand.standard_normal64>`__                                     0\n`kwarray.standard_normal32 <https://kwarray.readthedocs.io/en/latest/kwarray.fast_rand.html#kwarray.fast_rand.standard_normal32>`__                                     0\n`kwarray.random_product <https://kwarray.readthedocs.io/en/latest/kwarray.util_random.html#kwarray.util_random.random_product>`__                                       0\n`kwarray.random_combinations <https://kwarray.readthedocs.io/en/latest/kwarray.util_random.html#kwarray.util_random.random_combinations>`__                             0\n`kwarray.one_hot_lookup <https://kwarray.readthedocs.io/en/latest/kwarray.util_torch.html#kwarray.util_torch.one_hot_lookup>`__                                         0\n`kwarray.mindist_assignment <https://kwarray.readthedocs.io/en/latest/kwarray.algo_assignment.html#kwarray.algo_assignment.mindist_assignment>`__                       0\n`kwarray.mincost_assignment <https://kwarray.readthedocs.io/en/latest/kwarray.algo_assignment.html#kwarray.algo_assignment.mincost_assignment>`__                       0\n`kwarray.maxvalue_assignment <https://kwarray.readthedocs.io/en/latest/kwarray.algo_assignment.html#kwarray.algo_assignment.maxvalue_assignment>`__                     0\n`kwarray.iter_reduce_ufunc <https://kwarray.readthedocs.io/en/latest/kwarray.util_numpy.html#kwarray.util_numpy.iter_reduce_ufunc>`__                                   0\n`kwarray.generalized_logistic <https://kwarray.readthedocs.io/en/latest/kwarray.util_numpy.html#kwarray.util_numpy.generalized_logistic>`__                             0\n`kwarray.argminima <https://kwarray.readthedocs.io/en/latest/kwarray.util_numpy.html#kwarray.util_numpy.argminima>`__                                                   0\n`kwarray.apply_embedded_slice <https://kwarray.readthedocs.io/en/latest/kwarray.util_slices.html#kwarray.util_slices.apply_embedded_slice>`__                           0\n`kwarray.NoSupportError <https://kwarray.readthedocs.io/en/latest/kwarray.util_averages.html#kwarray.util_averages.NoSupportError>`__                                   0\n`kwarray.LocLight <https://kwarray.readthedocs.io/en/latest/kwarray.dataframe_light.html#kwarray.dataframe_light.LocLight>`__                                           0\n======================================================================================================================================================== ================\n\n\n\n.. |Pypi| image:: https://img.shields.io/pypi/v/kwarray.svg\n   :target: https://pypi.python.org/pypi/kwarray\n\n.. |Downloads| image:: https://img.shields.io/pypi/dm/kwarray.svg\n   :target: https://pypistats.org/packages/kwarray\n\n.. |ReadTheDocs| image:: https://readthedocs.org/projects/kwarray/badge/?version=release\n    :target: https://kwarray.readthedocs.io/en/release/\n\n.. # See: https://ci.appveyor.com/project/jon.crall/kwarray/settings/badges\n.. |Appveyor| image:: https://ci.appveyor.com/api/projects/status/py3s2d6tyfjc8lm3/branch/main?svg=true\n   :target: https://ci.appveyor.com/project/jon.crall/kwarray/branch/main\n\n.. |GitlabCIPipeline| image:: https://gitlab.kitware.com/computer-vision/kwarray/badges/main/pipeline.svg\n   :target: https://gitlab.kitware.com/computer-vision/kwarray/-/jobs\n\n.. |GitlabCICoverage| image:: https://gitlab.kitware.com/computer-vision/kwarray/badges/main/coverage.svg\n    :target: https://gitlab.kitware.com/computer-vision/kwarray/-/commits/main\n",
    "bugtrack_url": null,
    "license": "Apache 2",
    "summary": "The kwarray module",
    "version": "0.6.18",
    "project_urls": {
        "Homepage": "https://gitlab.kitware.com/computer-vision/kwarray"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9f5d6333ddb25b6f9d3360bef91ffdd494a88cee21056d04ed3295f8036d9187",
                "md5": "354753de9a8e7be64028652937a74f98",
                "sha256": "e3ea15d4a75b2c999da59ce592be3041f645b5ddcfd10fb73f5b6b65f20e7e28"
            },
            "downloads": -1,
            "filename": "kwarray-0.6.18-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "354753de9a8e7be64028652937a74f98",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.6",
            "size": 108278,
            "upload_time": "2024-03-20T02:41:51",
            "upload_time_iso_8601": "2024-03-20T02:41:51.410495Z",
            "url": "https://files.pythonhosted.org/packages/9f/5d/6333ddb25b6f9d3360bef91ffdd494a88cee21056d04ed3295f8036d9187/kwarray-0.6.18-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-03-20 02:41:51",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "kwarray"
}
        
Elapsed time: 0.21595s