问题标签 [numexpr]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
131 浏览

python - 如何使用整数列表元素查询python3数据框

几天来我一直在解决一个问题,如果有人可以提供帮助,我将不胜感激。

我有一个数据框,其中有一列填充了整数列表项。

例如,单列数据框:

我想对数据框运行查询以选择其元素包含特定值的行。“in”运算符不适用于此操作。我定义了一个func在查询中调用的函数

然后,当我调用查询时,它在 python 3.6.3 上按预期工作(xubuntu 默认安装,通过 pip3 进行一些更新)。例如,它返回包含值 7 的唯一行

但是,当我在最后一个 anaconda 版本中包含的 python 3.6.4 上运行它时,它失败并显示以下消息:'Series' objects are mutable, 因此它们不能被散列

我希望我的函数可以使用我使用的任何 python3 (>= 3.6)。也许我做错了。任何帮助,将不胜感激。

编辑 1:我在这两种情况下都使用 pandas 0.22.0。

解决方案:我找到了解决方案。由于 anaconda 查询函数的默认 engine='numexpr' 会出现此问题。设置 engine='python' 时,它再次起作用。

0 投票
1 回答
1274 浏览

python - Python 3.X:为什么 numexpr.evaluate() 比 eval() 慢?

使用 numexpr.evaluate() 的目的是加快计算速度。但在我的情况下,它甚至比 numpy und eval() 还要慢。我想知道为什么?

代码为例:

返回:使用 eval 的时间:0:00:00.002998

使用 numexpr 的时间:__ 0:00:00.052969

0 投票
1 回答
134 浏览

python - 使用 numexpr 优化 numpy 中的数值运算

我刚开始使用numexpr,虽然 github 存储库似乎有一些如何使用它的基本示例,但我无法清楚地理解这些如何应用于一些复杂的案例。假设我有一个功能:

使用 写这个的等效方法是numexpr什么?

0 投票
0 回答
196 浏览

python - 使用 numexpr 评估爱因斯坦求和

我目前正在处理大型 numpy 数组乘法,使用numpy.einsum,并且一直面临MemoryError问题。这就是为什么我试图在可能的情况下使用numexpr. 据我所理解:

在技​​术上与

然而,在其他情况下,事情似乎并不那么简单。假设我有三个表达式:

使用 实现这三个的等效方法是numexpr什么?

0 投票
1 回答
313 浏览

python - 在这种情况下,绕过“MemoryError”的最佳方法是什么?

我有两个numpy相当大的数组。第一个是arr1大小(40, 40, 3580),第二个是arr2大小(3580, 50)。我想要实现的是

这样 的大小arr_final就是(40, 40, 50)。但是,在执行上述操作时,python 可能会缓存内部数组操作,因此我不断收到内存错误。有什么办法可以避免内部缓存并获得最终结果?我也看过了numexpr,但是不知道怎么实现arr1[..., None]*arr2的,然后就sum过来axis=2numexpr。任何帮助或建议将不胜感激。

0 投票
1 回答
49 浏览

python - numexpr 是否支持特殊的贝塞尔函数?

我需要在大约一千万点处评估 BesselK 函数。我知道scipy.special支持这一点scipy.special.kv(n, x),但我想要更快的评估以及内存有效的评估。理想情况下numexpr会很好,我也试过numexpr.evaluate("kv(n, x)")了,numexpr.evaluate("besselk(n,x)")但都没有奏效。有人知道 BesselK in 的确切命令numexpr吗?

0 投票
1 回答
488 浏览

python - Python RecursionError : Pandas.eval() 的简单操作崩溃

我刚刚阅读并兴奋地流口水,这些新发现的优化功能可以满足我的Pandas相关需求。根据这本书:

DataFrame.eval() 方法允许使用列对表达式进行更简洁的评估:

真的

以我为例:

我的数据框包含大约 42000 条记录和 28 列。其中两个是字符串DateHeure哪些是字符串。

我的目标:将两列合并为一列。我可以用这段代码轻松地做到这一点:df_exade_light["Date"]+df_exade_light["Heure"],在其上应用 a %timeit返回

每个循环 6.07 毫秒 ± 219 微秒(平均值 ± 标准偏差。7 次运行,每次 100 次循环)

但由于某种原因df.eval('Date + Heure')返回一个:

RecursionError:超出最大递归深度

更重要的是,我应用在这个线程中找到的解决方案来提高允许的堆栈深度,但内核只是崩溃了。

这是什么原因?难道我做错了什么?


可以使用以下代码重现该问题:

0 投票
1 回答
1314 浏览

python - 为什么带有 numexpr 的 Pandas.eval() 这么慢?

测试代码:

我机器上的输出(一个相当快的 x86-64 Linux 桌面,带有 Python 3.6)是:

我理解为什么第二行要快一些(它忽略了 Pandas 索引)。但是为什么这种eval()方法使用numexpr这么慢呢?它不应该至少比第一种方法更快吗?文档确实使它看起来像:https ://pandas.pydata.org/pandas-docs/stable/enhancingperf.html

0 投票
2 回答
597 浏览

python - 在 numexpr 表达式中使用对象属性

我正在尝试在numexpr表达式中使用对象属性。最明显的做法是:

导致以下错误

咨询另一个问题,我能够通过使用得到一个不太令人满意的解决numexpr方案global_dict

一旦MyClass有十几个属性并且有几个这样的调用ne.evaluate.

有没有一种简单、干净的方法来做到这一点?

0 投票
1 回答
2263 浏览

python - 使用 NumExpr 提升 NumPy 代码的运行时间:分析

由于 NumPy 不使用多核,我正在学习使用 NumExpr 加速 NumPy 代码,因为它对多线程有很好的支持。以下是我正在使用的示例:

现在,我们可以使用 NumExpr 来做同样的事情:

从时序中我们可以看出,NumExpr即使我们使用与 NumPy 使用的相同数量的线程(即 1),速度也快 10 倍以上


现在,让我们增加计算并使用所有可用线程并观察:

不出所料且令人信服,这比仅使用单线程快 5 倍。

为什么即使使用相同数量的线程(即 1),NumExpr 也快 10 倍?