作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
在 python numexpr 中将值分配给您正在操作的同一数组以避免创建临时数组是否安全?
来自 project homepage 上的内存使用说明看起来不错,但如果不深入研究源代码,这几乎不是一个可靠的答案。
我尝试了以下工作正常,但我希望得到更熟悉这个包的人的确认:
import numpy as np
import numexpr as ne
a = np.ones(5)
b = a.copy()
ne.evaluate("a+b",out=a)
array([ 2., 2., 2., 2., 2.])
最佳答案
它可以工作,因为 numexpr 仍然在内部使用临时数组,尽管 block 大小为 1024 个元素(如果使用 VML,则为 4096 个)。您可以将这些输入 block 视为切片,尽管它们在评估期间存储为适当的 C 数据类型以提高速度和内存紧凑性。每一个chunk计算完成后,结果会存入out参数,否则必须分配一个与输入大小相同的数组。
查看 Why It Works 部分用于 numexpr 如何评估矢量化算术的伪代码。
关于python - numexpr.evaluate ("a+b",out=a),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15420213/
我是一名优秀的程序员,十分优秀!