首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >numexpr.evaluate("a+b",out=a)

numexpr.evaluate("a+b",out=a)
EN

Stack Overflow用户
提问于 2013-03-15 05:06:47
回答 1查看 2.9K关注 0票数 20

在python numexpr中,将值赋给正在操作的同一数组以避免创建临时数组是否安全?

project homepage上对内存使用的描述来看,它看起来还不错,但如果不深入研究源代码,这几乎不是一个可靠的答案。

我尝试了以下方法,它们工作得很好,但我希望得到更熟悉这个包的人的确认:

代码语言:javascript
复制
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.])
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-22 10:52:50

它是有效的,因为numexpr仍然在内部使用临时数组,尽管是1024个元素的块大小(如果使用VML,则为4096个)。您可以将这些输入块视为切片,尽管在评估过程中,为了速度和内存紧凑性,它们被存储为适当的C数据类型。在执行每个块的计算后,结果将被存储到out参数中,否则它必须分配一个大小与输入相同的数组。

请查看Why It Works部分,了解有关numexpr如何计算向量化算法的伪代码。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15420213

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档