Skip to main content

Snuggs are s-expressions for Numpy

Project description

https://travis-ci.org/mapbox/snuggs.svg?branch=master https://coveralls.io/repos/mapbox/snuggs/badge.svg

Snuggs are s-expressions for Numpy

>>> snuggs.eval("(+ (asarray 1 1) (asarray 2 2))")
array([3, 3])

Syntax

Snuggs wraps Numpy in expressions with the following syntax:

expression = "(" (operator | function) *arg ")"
arg = expression | name | number | string

Examples

Addition of two numbers

import snuggs
snuggs.eval('(+ 1 2)')
# 3

Multiplication of a number and an array

Arrays can be created using asarray.

snuggs.eval("(* 3.5 (asarray 1 1))")
# array([ 3.5,  3.5])

Evaluation context

Expressions can also refer by name to arrays in a local context.

snuggs.eval("(+ (asarray 1 1) b)", b=np.array([2, 2]))
# array([3, 3])

Functions and operators

Arithmetic (* + / -) and logical (< <= == != >= > & |) operators are available. Members of the numpy module such as asarray(), mean(), and where() are also available.

snuggs.eval("(mean (asarray 1 2 4))")
# 2.3333333333333335
snuggs.eval("(where (& tt tf) 1 0)",
    tt=numpy.array([True, True]),
    tf=numpy.array([True, False]))
# array([1, 0])

Higher-order functions

New in snuggs 1.1 are higher-order functions map and partial.

snuggs.eval("((partial * 2) 2)")
# 4

snuggs.eval('(asarray (map (partial * 2) (asarray 1 2 3)))')
# array([2, 4, 6])

Performance notes

Snuggs makes simple calculator programs possible. None of the optimizations of, e.g., numexpr (multithreading, elimination of temporary data, etc) are currently available.

If you’re looking to combine Numpy with a more complete Lisp, see Hy:

=> (import numpy)
=> (* 2 (.asarray numpy [1 2 3]))
array([2, 4, 6])

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

snuggs-1.1.0.tar.gz (3.6 kB view details)

Uploaded Source

Built Distributions

snuggs-1.1.0-py3-none-any.whl (5.2 kB view details)

Uploaded Python 3

snuggs-1.1.0-py2-none-any.whl (5.2 kB view details)

Uploaded Python 2

File details

Details for the file snuggs-1.1.0.tar.gz.

File metadata

  • Download URL: snuggs-1.1.0.tar.gz
  • Upload date:
  • Size: 3.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for snuggs-1.1.0.tar.gz
Algorithm Hash digest
SHA256 e290c21664b0bd897eed0b6049bb05d73679777f1f89a514b64fe29f8f4a0e89
MD5 3073a1662a259cfe296257950eaf2dd4
BLAKE2b-256 b83145408017c64371576f7fa2c3a1f3cb076f107e9a1c572ee7a6388bdd5fd5

See more details on using hashes here.

File details

Details for the file snuggs-1.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for snuggs-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9aeddcdc8b8fd3d1a12380e136843c67b6fa1cf89d23b2132c0f03e3cb8218be
MD5 0238b16aa5460100cfc5d5d07cf188c2
BLAKE2b-256 fb0fff9e799242df7948da0d2306996ecbd120f6ddf3ed5e146f761d369f6f3d

See more details on using hashes here.

File details

Details for the file snuggs-1.1.0-py2-none-any.whl.

File metadata

File hashes

Hashes for snuggs-1.1.0-py2-none-any.whl
Algorithm Hash digest
SHA256 ee3c4a313f01d6b7d2af0b55d59961fdd40d1e110eb3aa726af1c11dee857fc9
MD5 127eb84cc13102a0fddb34c337f3b571
BLAKE2b-256 5a9d49c81a6235ab8cb966a4e1d870a62ad1f43811abafefa3b69fa3312b150d

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page