【发布时间】:2011-04-28 00:21:11
【问题描述】:
首先,让我给你看一下codez:
a = array([...])
for n in range(10000):
func_curry = functools.partial(func, y=n)
result = array(map(func_curry, a))
do_something_else(result)
...
我在这里所做的是尝试将func 应用于数组,每次更改func 的第二个参数的值。这太慢了(每次迭代都创建一个新函数肯定无济于事),我也觉得我错过了 Python 的做法。有什么建议吗?
给我一个二维数组的解决方案是个好主意吗?我不知道,但也许是。
可能的问题的答案:
- 是的,这是(使用广义定义)一个优化问题(
do_something_else()隐藏了这个) - 不,scipy.optimize 不起作用,因为我正在处理布尔值,它似乎永远不会收敛。
【问题讨论】:
-
func 是做什么的?如果我们对它的作用有更多了解,那么我们也许可以帮助您找到更快的方法。现在,我认为 map 必须将 numpy 数组更改为列表,对其进行映射,然后将列表更改回对我来说听起来并不快的数组。如果我们能找到一种使用 numpy 函数对列执行 func 的方法,它应该会更快。我猜您正在对 a 中矩阵的每一列应用 func ,然后使用结果更接近正确的解决方案。您是否进行了分析以确保这部分是问题而不是 do_something_else 部分?
标签: python arrays map numpy currying