不是 for vectorize
,但大多数 numpy 函数采用的out
参数正是你想要的。
您要使用什么功能numpy.vectorize
? vectorize
当您尝试“矢量化”计算时,几乎总是错误的解决方案。
在上面的示例中,如果您想就地执行操作,可以通过以下方式完成:
a = numpy.zeros((1, 10))
a += 1
或者,如果你想有点冗长,但完全按照你的例子做:
a = numpy.zeros((1, 10))
buf = numpy.empty_like(a)
numpy.add(a, 1, out=buf)
numpy.vectorize
必须为数组中的每个元素调用一个 python 函数。因此,与对整个数组进行操作的 numpy 函数相比,它具有额外的开销。通常,当人们提到“向量化”表达式以获得加速时,他们指的是从基本 numpy 函数的构建块构建表达式,而不是使用vectorize
(这肯定会令人困惑......)。
编辑:根据您的评论,vectorize
确实适合您的用例!(除了安全/沙盒问题之外,编写“光栅计算器”是一个非常完美的用例。)
另一方面,numexpr
如果您不介意额外的依赖,它可能更合适。
它更快并且需要一个out
参数。