snuggs是numpy的s表达式

snuggs的Python项目详细描述


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

snuggs是numpy的s表达式

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

语法

snuggs用以下语法将numpy包装在表达式中:

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

示例

两个数相加

importsnuggssnuggs.eval('(+ 1 2)')# 3

数与数组的乘法

可以使用asarray创建数组。

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

评估背景

表达式也可以按名称引用本地上下文中的数组。

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

可以使用关键字参数(例如, b=np.array([2, 2]),或者通过传递存储 键和关联的数组值。通过字典,特别是 当使用的函数或运算符 引用提供值的顺序。例如, read函数将查找传递的i-th值:

ctx=OrderedDict((('a',np.array([5,5])),('b',np.array([2,2]))))snuggs.eval("(- (read 1) (read 2))",ctx)# array([3, 3])

函数和运算符

算术(* + / -)和逻辑(< <= == != >= > & |)运算符是 可用。numpy模块的成员,例如asarray()mean(), 还有where()也可以使用。

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])

高阶函数

snuggs 1.1中的新功能是高阶函数mappartial

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

性能说明

snuggs使简单的计算器程序成为可能。没有任何优化 例如numexpr(多线程, 临时数据的消除等)目前可用。

如果您希望将numpy与更完整的lisp结合起来,请参见 Hy

=>(import numpy)=>(* 2(.asarraynumpy[123]))array([2, 4, 6])

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
部署在kubernetes上时,微服务中服务间通信中的java连接超时问题   java Nway合并对2G字符串文件进行排序   java如何使用FlexJson按特定顺序序列化对象和属性   如何在java布尔方法中导入文本文件   swing需要帮助在我的Java GUI中实现用户输入的侦听器   java如何读取枚举中Spring Messagesource的内容?   每个Ajaxcall上(之前和之后)的java Javascript   java compareTo(Comparable)方法对于Comparable类型未定义   带换行符的java Bash输入重定向   使用Spring授权标记检查用户是否登录时发生java错误?   使用大尺寸(100000)数组执行快速排序时出现Java StackOverflower错误   java forEach迭代器标记   Java ClassNotFound异常,Maven依赖项作为JAR   java将HQL转换为SQL查询   java正在将片段列表发送到FragmentPagerAdapter   java onActivityResult应该调用super。onActivityResult   java如果我导入一个超类,我也需要导入它的子类吗?   java是否可以通过openid协议对aadhar进行身份验证