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.3.1.tar.gz (3.9 kB view details)

Uploaded Source

Built Distribution

snuggs-1.3.1-py2-none-any.whl (5.5 kB view details)

Uploaded Python 2

File details

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

File metadata

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

File hashes

Hashes for snuggs-1.3.1.tar.gz
Algorithm Hash digest
SHA256 f9b87b5bc9605a90a98b3a2cae16c3b54f60069a5dcb25ba3ec52dfb622cfa68
MD5 f812255b9b89d178a96c39395dba263d
BLAKE2b-256 f406ebe3295bb852b70bdf3e8a28f71014fbc0786434c4ccb31b7c62f9608a9d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for snuggs-1.3.1-py2-none-any.whl
Algorithm Hash digest
SHA256 c8b45012d2edf3ebc08d470e81d224d8643b901404938031c2fdee1dce8b66fa
MD5 6acff4e4d529c129f0b625052e6738c1
BLAKE2b-256 2d67a29e34861c4b68b66718ce53debb9d788513dccb3414193e6a40ab660bc1

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