- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我一直在尝试学习 Numexpr包裹。关于如何使用它的例子充其量是稀疏的。有人可以给我一个关于如何使用“local_dict”和“global_dict”参数的简单示例吗?
最佳答案
下面的例子可能会澄清一点。先把场景设置成这样:
import numpy as np
import numexpr as ne
a = np.arange(10)
b = np.arange(10, 20)
c = np.arange(20, 30)
没有dict
>>> def f0(a, b) :
... a, b = 2 * a, 3 * b
... return ne.evaluate('2*a + 3*b + c')
...
>>> f0(a, b)
array([110, 124, 138, 152, 166, 180, 194, 208, 222, 236])
>>> 4 * a + 9 * b + c
array([110, 124, 138, 152, 166, 180, 194, 208, 222, 236])
当你像这样运行它时,a
和 b
是局部变量,而 c
是全局变量,正如预期的那样。
local_dict
>>> def f1(a, b) :
... a, b = 2 * a, 3 * b
... return ne.evaluate('2*a + 3*b + c',
... local_dict={'c' : np.arange(30, 40)})
...
>>> f1(a, b)
array([ 60, 66, 72, 78, 84, 90, 96, 102, 108, 114])
>>> 2*a + 3 * b + np.arange(30, 40)
array([ 60, 66, 72, 78, 84, 90, 96, 102, 108, 114])
因为我们重新定义了local_dict
,a
和b
不再作为局部变量出现在那里,所以全局的值为代替使用。并且由于 c
现在被定义为局部变量,全局变量的值将被忽略。
global_dict
>>> def f2(a, b) :
... a, b = 2 * a, 3 * b
... return ne.evaluate('2*a + 3*b + c',
... global_dict= {'c' : np.arange(30, 40)})
...
>>> f2(a, b)
array([120, 134, 148, 162, 176, 190, 204, 218, 232, 246])
>>> 4 * a + 9 * b + np.arange(30, 40)
array([120, 134, 148, 162, 176, 190, 204, 218, 232, 246])
在这种情况下,a
和b
取自默认的本地字典,新的c
代替原来的全局一个。
关于python - Numexpr:如何使用 "local_dict"和 "global_dict"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14574455/
我需要在大约一千万点处评估 BesselK 函数。我知道scipy.special支持此为 scipy.special.kv(n, x) ,但我想要更快的评估以及内存有效的评估。理想的numexpr会
我过去在很多机器上成功安装了 numexpr。但现在我实在无法应付使其在新的 Linux 系统上运行。本质上我下载了 tar.gz 文件并且 python setup.py install --hom
我正在尝试执行以下操作: import numexpr as ne a = np.random.rand(10, 1) b = np.random.rand(1, 10) ne.NumExpr('su
我想评估 python (2.7) 中 numexpr 模块的性能。为此,我创建了一个大小为 (10^5, 10^5) 的随机稀疏矩阵。但是,下面的脚本已经在表达式求值步骤中抛出错误,表示它无法识别对
我正在使用 sympy 进行一些符号数学运算,然后使用 eval 和 sympy 的 lambdastr 实用程序生成 Python lambda 函数。这是我的意思的一个简化示例: import s
我需要使用 numexpr 重写这段代码,它正在计算矩阵数据 [行 x 列] 和向量 [1 x 列] 的欧几里德范数矩阵。 d = ((data-vec)**2).sum(axis=1) 如何实现?或
我正在尝试在 numexpr 表达式中使用对象属性。最明显的做法是: import numpy as np import numexpr as ne class MyClass: def __
如何使用 numexpr 有效地表达以下内容? z = min(x-y, 1.0) / (x+y) 这里,x 和y 是一些相同形状的大型 NumPy 数组。 换句话说,在除以 x+y 之前,我试图将
在 python numexpr 中将值分配给您正在操作的同一数组以避免创建临时数组是否安全? 来自 project homepage 上的内存使用说明看起来不错,但如果不深入研究源代码,这几乎不是一
在 Windows 10 Python 3.7.9 (IDLE) 上,我成功安装了“pip install numexpr”,但在“import numexpr as ne”时出现错误: 回溯(最近调
我在 Windows 7 机器上通过 pip 安装 numexpr 包: pip list | grep numexpr numexpr (2.4.6) 但是当我打开 ipython 并尝试使用 df
考虑以下 dtype float32 的 NumPy 数组: In [29]: x = numpy.arange(10, dtype=numpy.float32) 当我使用pytables.Expr将
我刚刚开始使用 numexpr,虽然 github 存储库似乎有一些如何使用它的基本示例,但我无法清楚地理解它们如何应用于某些复杂的情况。假设我有一个函数: def func(x): #x is
我在安装 numexpr 以安装 PyTables 时遇到问题,因此我可以处理大量数据集。 构建细节:Windows 7 专业版 64 位、Python 2.7、numexpr 2.01、numpy
我一直在尝试学习 Numexpr包裹。关于如何使用它的例子充其量是稀疏的。有人可以给我一个关于如何使用“local_dict”和“global_dict”参数的简单示例吗? 最佳答案 下面的例子可能会
我对 NumPy 据说是对其算术数组操作进行矢量化的概念感到有点挣扎:它是否克服了 Python 的 GIL,因为 NumPy 的一部分是用 C 实现的?另外,Numexpr 是如何工作的呢?如果我理
我正在尝试使用 numexpr 加速 lambdify 生成的一些数字代码。不幸的是,基于numexpr 的函数在使用sqrt 函数时会中断,即使它是supported functions 之一。 .
由于 NumPy 不使用多核,我正在学习使用 NumExpr 加速 NumPy 代码,因为它对多线程有很好的支持。下面是我正在使用的示例: # input array to work with x =
测试代码: import numpy as np import pandas as pd COUNT = 1000000 df = pd.DataFrame({ 'y': np.random.
我正在尝试创建一个较小的,分层的样本,以减少处理时间。 运行此代码: df_strat= stratified_sample(df, ["Parental Status","Gender", "Age
我是一名优秀的程序员,十分优秀!