在numpy数组上映射函数的最有效方法是什么?

656
什么是在numpy数组上映射函数的最有效方法?我目前正在执行以下操作:
import numpy as np 

x = np.array([1, 2, 3, 4, 5])

# Obtain array of square of each element in x
squarer = lambda t: t ** 2
squares = np.array([squarer(xi) for xi in x])

然而,这种方法可能非常低效,因为我使用列表推导式在将新数组构建为Python列表之前,再将其转换回numpy数组。我们能做得更好吗?


19
为什么不使用"squares = x**2"呢?你是否需要计算更加复杂的函数? - 22degrees
5
只使用 squarer(x) 怎么样? - Life
5
也许这并不是直接回答问题的方法,但我听说过numba可以将现有的Python代码编译成并行机器指令。当我真正有机会使用它时,我会重新审查和修改这篇文章。 - 把友情留在无盐
@Life squarer(x) 将在数组元素上应用 squarer 函数,并返回一个包含单个 squarer(element) 调用结果的数组。我写这篇文章是因为一开始“只有 squarer(x)”并不够清晰。 - JustAnEuropean
11个回答

0

1
不行。这会创建一个网格并将整个内容发送到“函数”。这不是OP想要的。 - hpaulj

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接