数字表达式错误:"a = global_dict[名称]"



我正在尝试使用Nuexpr制作一个快速的Vector Norm函数以与Numpy的函数进行比较。我尝试以下方法:

import numexpr as ne
import numpy as np
def L2_Norm(vector_in):
    vector1 = ne.evaluate("abs(vector_in)")
    vector2 = ne.evaluate("vector1**2")
    vector3 = ne.evaluate("sum(vector2)")
    vector_out = ne.evaluate("sqrt(vector3)")
    return vector_out`
ve = np.arange(10)
L2_Norm(ve)

我明白这个:

File "C:Folder1Folder2srctest.py", line 11, in L2_Norm
  vector3 = ne.evaluate("sum(vector2)")<br>
File "C:Python27libsite-packagesnumexprnecompiler.py", line 701, in evaluate
  a = global_dict[name]<br>
KeyError: 'a'

我基本上遵循了他们的用户指南上的相同步骤(这似乎是唯一的参考)。我唯一的线索是:

UMEXPR 的主要例程是这样的:

evaluate(ex, local_dict=None, global_dict=None, **kwargs)

其中 ex 是形成表达式的字符串,如"2*a+3*b"。价值观 默认情况下,a 和 b 将从调用函数的帧中获取 (通过使用sys._getframe())。或者,它们可以是 使用 local_dict 或 global_dict 参数指定,或作为传递 关键字参数

。我真的不明白 - 我认为作者保持简单,因为包装很简单。我忽略了什么?

事实证明,"local_dict=无,global_dict=无"参数毕竟不是默认的。您需要专门将它们添加到numexpr.evaluate函数中。

相关内容

  • 没有找到相关文章

最新更新