将函数映射到 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 数组。我们能做得更好吗?
原文由 Ryan 发布,翻译遵循 CC BY-SA 4.0 许可协议
我已经测试了所有建议的方法加上
np.array(list(map(f, x)))
和perfplot
(我的一个小项目)。如果您尝试矢量化的函数已经 被 矢量化(如原始帖子中的
x**2
示例),使用它比其他任何方法都 _快得多_(注意对数比例):如果您确实需要矢量化,那么使用哪种变体并不重要。
重现情节的代码: