【发布时间】:2015-04-24 21:07:33
【问题描述】:
假设我有以下功能:
def f(x,y):
return x*y
如何使用多处理模块将该函数应用于 NxM 2D numpy 数组中的每个元素?使用串行迭代,代码可能如下所示:
import numpy as np
N = 10
M = 12
results = np.zeros(shape=(N,M))
for x in range(N):
for y in range(M):
results[x,y] = f(x,y)
【问题讨论】:
-
我认为这是一个玩具模型,您需要做的事情更复杂,但 numpy 具有高效的功能来完成您在代码中编写的操作
-
我目前正在浏览文档,但还没有找到如何将函数应用于数组中的每个元素。有什么指导吗?
-
看下面这个简单案例的答案
-
@JulienSpronck 看起来您忘记发布您提到的答案
-
Julien 是对的 - 当您尝试优化 numpy 代码时,多处理是 最后一个 工具。 Python 中的多处理既慢又麻烦,使用 broadcasting 和 BLAS 优化的线性代数运算通常可以获得更大的效率提升。除此之外,还有Cython、numba 和numexpr。由于您没有向我们展示您实际尝试优化的代码,因此很难给出更具体的建议。
标签: python arrays numpy multiprocessing