问题标签 [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.
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' 时,它再次起作用。
python - Python 3.X:为什么 numexpr.evaluate() 比 eval() 慢?
使用 numexpr.evaluate() 的目的是加快计算速度。但在我的情况下,它甚至比 numpy und eval() 还要慢。我想知道为什么?
代码为例:
返回:使用 eval 的时间:0:00:00.002998
使用 numexpr 的时间:__ 0:00:00.052969
python - 使用 numexpr 优化 numpy 中的数值运算
我刚开始使用numexpr
,虽然 github 存储库似乎有一些如何使用它的基本示例,但我无法清楚地理解这些如何应用于一些复杂的案例。假设我有一个功能:
使用 写这个的等效方法是numexpr
什么?
python - 使用 numexpr 评估爱因斯坦求和
我目前正在处理大型 numpy 数组乘法,使用numpy.einsum
,并且一直面临MemoryError
问题。这就是为什么我试图在可能的情况下使用numexpr
. 据我所理解:
在技术上与
然而,在其他情况下,事情似乎并不那么简单。假设我有三个表达式:
使用 实现这三个的等效方法是numexpr
什么?
python - 在这种情况下,绕过“MemoryError”的最佳方法是什么?
我有两个numpy
相当大的数组。第一个是arr1
大小(40, 40, 3580)
,第二个是arr2
大小(3580, 50)
。我想要实现的是
这样 的大小arr_final
就是(40, 40, 50)
。但是,在执行上述操作时,python 可能会缓存内部数组操作,因此我不断收到内存错误。有什么办法可以避免内部缓存并获得最终结果?我也看过了numexpr
,但是不知道怎么实现arr1[..., None]*arr2
的,然后就sum
过来axis=2
了numexpr
。任何帮助或建议将不胜感激。
python - numexpr 是否支持特殊的贝塞尔函数?
我需要在大约一千万点处评估 BesselK 函数。我知道scipy.special
支持这一点scipy.special.kv(n, x)
,但我想要更快的评估以及内存有效的评估。理想情况下numexpr
会很好,我也试过numexpr.evaluate("kv(n, x)")
了,numexpr.evaluate("besselk(n,x)")
但都没有奏效。有人知道 BesselK in 的确切命令numexpr
吗?
python - Python RecursionError : Pandas.eval() 的简单操作崩溃
我刚刚阅读并兴奋地流口水,这些新发现的优化功能可以满足我的Pandas
相关需求。根据这本书:
DataFrame.eval() 方法允许使用列对表达式进行更简洁的评估:
真的
以我为例:
我的数据框包含大约 42000 条记录和 28 列。其中两个是字符串Date
,Heure
哪些是字符串。
我的目标:将两列合并为一列。我可以用这段代码轻松地做到这一点:df_exade_light["Date"]+df_exade_light["Heure"]
,在其上应用 a %timeit
返回
每个循环 6.07 毫秒 ± 219 微秒(平均值 ± 标准偏差。7 次运行,每次 100 次循环)
但由于某种原因df.eval('Date + Heure')
返回一个:
RecursionError:超出最大递归深度
更重要的是,我应用在这个线程中找到的解决方案来提高允许的堆栈深度,但内核只是崩溃了。
这是什么原因?难道我做错了什么?
可以使用以下代码重现该问题:
python - 为什么带有 numexpr 的 Pandas.eval() 这么慢?
测试代码:
我机器上的输出(一个相当快的 x86-64 Linux 桌面,带有 Python 3.6)是:
我理解为什么第二行要快一些(它忽略了 Pandas 索引)。但是为什么这种eval()
方法使用numexpr
这么慢呢?它不应该至少比第一种方法更快吗?文档确实使它看起来像:https ://pandas.pydata.org/pandas-docs/stable/enhancingperf.html
python - 在 numexpr 表达式中使用对象属性
我正在尝试在numexpr
表达式中使用对象属性。最明显的做法是:
导致以下错误
咨询另一个问题,我能够通过使用得到一个不太令人满意的解决numexpr
方案global_dict
:
一旦MyClass
有十几个属性并且有几个这样的调用ne.evaluate
.
有没有一种简单、干净的方法来做到这一点?
python - 使用 NumExpr 提升 NumPy 代码的运行时间:分析
由于 NumPy 不使用多核,我正在学习使用 NumExpr 加速 NumPy 代码,因为它对多线程有很好的支持。以下是我正在使用的示例:
现在,我们可以使用 NumExpr 来做同样的事情:
从时序中我们可以看出,NumExpr
即使我们使用与 NumPy 使用的相同数量的线程(即 1),速度也快 10 倍以上
现在,让我们增加计算并使用所有可用线程并观察:
不出所料且令人信服,这比仅使用单线程快 5 倍。
为什么即使使用相同数量的线程(即 1),NumExpr 也快 10 倍?