Giter Site home page Giter Site logo

nani's Introduction

Nani

Build status Coverage Status PyPI latest version Documentation status License

Nani is a Python library that provides an alternative approach to defining and viewing NumPy's arrays.

Upon getting started with NumPy, the rules to define numpy.dtype objects tend to quickly become confusing. Not only different syntaxes can create a same data type, but it also seems arbitrary and hence difficult to remember that sub-array data types can only be defined as tuples while structured data types exclusively require lists made of field tuples, and so on.

To address this point, Nani takes the stance of offering one—and only one—way of constructing numpy.dtype objects. Although this syntax makes the code more verbose, it also makes it easier to read and to reason about.

Nani's approach allows type introspection which brings additional benefits in the form of dynamically generated default values and view types. Default values facilitate the definition of new array elements while view types are useful to encapsulate interactions with NumPy and to expose a different public interface to your library users instead of the one provided with numpy.ndarray.

Features

  • explicit syntax for defining numpy.dtype objects.
  • generates default values and view types.
  • allows for type introspection.

Usage

>>> import numpy
>>> import nani
>>> color_type = nani.Array(
...     element_type=nani.Number(type=numpy.uint8, default=255),
...     shape=3,
...     view=None)
>>> dtype, default, view = nani.resolve(color_type, name='Color')
>>> a = numpy.array([default] * 2, dtype=dtype)
>>> v = view(a)
>>> for color in v:
...     print(color)
[255, 255, 255]
[255, 255, 255]

The color_type above defines an array of 3 numpy.uint8 elements having each a default value of 255. The resulting dtype and default objects are used to initialize a new NumPy array of 10 color elements, while the view type is used to wrap that array into a standard collection interface.

See the Tutorial section from the documentation for more detailed examples and explanations on how to use Nani.

Documentation

Read the documentation online at nani.readthedocs.io or check its source in the doc directory.

Out There

Projects using Nani include:

Author

Christopher Crouzet <christophercrouzet.com>

nani's People

Stargazers

 avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.