2

首先,让我向您展示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 没有奏效,因为我正在处理布尔值并且它似乎永远不会收敛。
4

3 回答 3

6

你试过了numpy.vectorize吗?

...
    vfunc_curry = vectorize(functools.partial(func, y=n))
    result = vfunc_curry(a)
...
于 2010-10-21T23:05:24.343 回答
0

如果a大小很大,则瓶颈不应该是函数的创建,而是数组的重复。

于 2010-10-20T21:11:02.227 回答
0

你能重写函数吗?如果可能,您应该编写函数来获取两个 numpy 数组anumpy.arange(n). 您可能需要重塑以使阵列排队以进行广播。

于 2011-02-12T19:50:13.807 回答