【发布时间】:2018-01-24 06:53:09
【问题描述】:
我有兴趣找到使用 Numpy 在 Python3.6 中进行简单操作的最快方法。我希望创建一个函数并从给定数组到函数值数组。这是一个使用map 的简化代码:
import numpy as np
def func(x):
return x**2
xRange = np.arange(0,1,0.01)
arr_func = np.array(list(map(func, xRange)))
但是,由于我使用复杂的函数运行它并使用大型数组,因此运行速度对我来说非常重要。有没有已知更快的方法?
编辑我的问题与this 的问题不同,因为我问的是从函数而不是生成器分配。
【问题讨论】:
-
实际的实现会涉及到具体的优化。所以,没有看到它,一般情况下没有神奇的方法。
-
谢谢@Divakar 我确实在寻找一种更快的方法来处理一般情况。
-
为什么选择 xRange 和 pRange?在这种特殊情况下,**2 操作已经过矢量化,因此您通过执行映射而不是仅执行
arr_func = func(xRange)会受到惩罚。在一般情况下,您必须尽可能多地尝试和利用矢量化操作。 -
感谢@IgnacioVergaraKausel,
pRange是粘贴错误。我删除了它。 -
只是补充一下,如果你刚刚做了
func(xRange),我会得到 44.8 微秒,而你的地图列出到数组需要 33.4 毫秒(对于 100000 个随机元素的数组)。
标签: python arrays python-3.x numpy