问题标签 [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 投票
2 回答
225 浏览

python - 为什么多处理会减慢嵌套的 for 循环?

我有很多非常大的矩阵AFeatures,我正在将它们与其他一些非常大的矩阵进行比较BFeatures,它们的形状都是(878, 2, 4, 15, 17, 512),使用欧几里得距离。我正在尝试并行化此过程以加快比较速度。我在 Conda 环境中使用 Python 3,我的原始代码平均 100% 使用两个 CPU 内核:

我尝试了两种加快代码速度的方法。

  1. 使用多处理

这种方法将运行时间增加了大约 5%,尽管所有 8 个 CPU 内核现在都以 100% 的速度使用。我尝试了许多不同的过程,越多越慢。

  1. 这是一种稍微不同的方法,我使用 numexpr 库来执行更快的 linal.norm 操作。对于单个操作,这种方法将运行时间减少了 10 倍。

但是,对于嵌套的 for 循环,这种方法将总执行时间增加了 3 倍。我不明白为什么简单地将这个操作放在嵌套的 for 循环中会如此显着降低性能?如果有人对如何解决此问题有任何想法,我将不胜感激!

0 投票
0 回答
85 浏览

python - Numba 比普通 python 慢得多,来自 Pandas 文档

我的目标是复制 pandas 文档增强执行指南的结果。 https://pandas.pydata.org/pandas-docs/stable/user_guide/enhancingperf.html

示例的 numba 实现应该非常快,甚至比 Cython 实现还要快。我成功地实现了 Cython 代码,但是虽然 Numba 应该很容易实现(只是添加一个装饰器对吗?)它超级慢,甚至比普通的 python 实现还要慢。有谁知道怎么回事?

结果:

在此处输入图像描述

代码:

依赖项:

在此处输入图像描述

0 投票
1 回答
103 浏览

python - curve_fit 的快速 Python 指数函数:Numpy Express 给出较慢的结果

我正在用 python 实时拟合指数数据。数百万次调用我的指数衰减函数“fexp”,因此加速它可以大大提高性能。我最近偶然发现了 numexpr模块,但它似乎是为更大的数组量身定制的。在我的健身程序中使用它会带来更差的表现。两个拟合函数的Timeit结果:

大概这是由于 numpy 评估编译开销。有没有办法预编译?或者我可以进行的其他优化(将我的块大小更改为我的 fit 数组的长度?我在文档中没有看到任何这样的选项。

我也遇到过 cpython 和 numba,这些是否适合加速 scipy fit?(编辑:Numba 似乎也没有帮助,请参见上面的结果)这是相关的拟合代码,其中 y 是原始数据:

还有 fexp 函数的格式:

这已经通过多处理例程运行。当前限制是 fexp 计算的速度。任何在 python 中优化指数调用的帮助或见解将不胜感激。

编辑:这是一个完整的示例 y:

0 投票
0 回答
143 浏览

python - pip numexpr 安装和 spyder 内核问题

我启动了 Spyder (Python 3.7) 并收到了这个警告:

如果我忽略它,我有时会收到内核连接错误(当/如果它再次发生时,我会截屏)。

我试过pip install pandas --upgrade了,希望它能升级pandas及其所有依赖项(包括numexpr),但它只是删除了 pandas 1.3.0 而没有安装 pandas 1.3.4

然后我做了 pip install pandas,它成功安装了 pandas 1.3.4:

我认为这一切都很好,但我又开始收到警告。当我按照上述方法进行操作时,这些就消失pip install numexpr --upgradepip install numexpr。但是现在我的内核偶尔会无缘无故地重新启动。我应该做些什么来解决这个问题吗?

干杯!

0 投票
1 回答
38 浏览

python - 为什么使用 mpmath 中的函数时 numexpr.evaluate 会返回错误?

我刚刚开始使用 numexpr 的评估函数,但遇到了一个恼人的错误。

我希望它本身打印 sin(10),并且它做得非常好,但是如果我执行 sec(10),我会得到“TypeError: 'VariableNode' object is not callable”

示例代码:

当我使用 eval 时,它会返回正确的值,就像它应该的那样。

为什么会出现这种情况?是因为 numexpr 是 numpy 的扩展并自动从 numpy 获取其函数(numpy 没有 sec、csc、cot),因此不能从 mpmath 获取函数?

提前谢谢了!:)

0 投票
1 回答
182 浏览

numpy - 如何加速我编写的python代码:包含用于按多边形分类点的嵌套函数的函数

我用 Python 编写了以下 NumPy 代码:

此代码将经常从另一个具有大数据输入的代码中调用。因此,加速此代码是必不可少的。我尝试使用JAXNumbajit库中的装饰器来加速代码,但我无法正确使用它来使代码更好。我已经在 Colab 上测试了代码(对于 3 个循环数为 20、250 和 2000 的数据集)的速度,结果是:

这段代码所做的是在一个范围内找到一些坐标,然后对它们进行一些计算。
对于任何可以显着加速此代码的答案,我将不胜感激(我相信它可以)。此外,我将感谢任何有关通过更改(替换)使用的 NumPy 方法和……或为数学运算编写方法来加速代码的经验丰富的建议。

笔记:

  • 建议的答案必须可由 python 版本 2 执行(适用于版本 2 和 3 非常好)
  • 代码中注释的代码行对于主要目的来说是不必要的,只是为了进一步评估而编写的。任何用建议的答案处理这些行的建议都值得赞赏(不需要)。

测试数据集:
小数据集:https
://drive.google.com/file/d/1CswjyoqS8ogLmLQa_oNTOj221chDcbK8/view?usp=sharing 中等数据集:https ://drive.google.com/file/d/14RJ0Ackx88NzQWloops5FagzuNQYDSrh/ view?usp=sharing
大数据集:https ://drive.google.com/file/d/1dJnXpb3HiAGcRC9PPTwui9joNcij4E_E/view?usp=sharing

0 投票
0 回答
37 浏览

python - 具有大数组的线段有符号距离场(Python)

我目前正在为体积建模(使用有符号距离场)编写一个 python 包,并希望提高线段 sdf 计算的性能。我尝试了几种不同的实现,但似乎无法获得任何额外的速度。我将总结如下:

生成 sdf 的当前代码:

x_、y_ 和 z_ 是样本点的 3D 坐标。我正在尝试使用广播来节省内存并加快速度。通常,“res”参数的范围是 100-300。我添加了注释以显示哪些行占据了大部分执行时间。我使用 pycharm line profiler 插件对函数计时。

目前,此实现有效,但对我的需求来说太慢了。我需要能够为格网络中的许多行运行数百次(输入点 x_、y_ 和 z_ 将相同,但每个点的 p1_ 和 p2_ 都会改变)。如果有一种方法可以加快速度,那就太好了,否则更有效的方法来多次运行它(例如像 numba 之类的东西)也会很棒。我也尝试过将 numexpr 与完整的 meshgrid 数组一起使用,而不是广播。

我希望这很清楚!

0 投票
0 回答
18 浏览

python - 为什么 NumExpr 默认为 python 中显示的 8 个线程警告消息?

我正在尝试使用 python 中的 lux 库来获得可视化建议。它显示警告,例如NumExpr 默认为 8 个线程。.

接着:

但是,一切正常。有什么问题还是我应该忽略它?警告显示如下: 在此处输入图像描述