2

まず、コードを示します。

a = array([...])
for n in range(10000):
    func_curry = functools.partial(func, y=n)
    result = array(map(func_curry, a))
    do_something_else(result)
    ...

ここで行っているのは、の 2 番目のパラメーターのfunc値を毎回変更して、配列に適用しようとしていることです。funcこれはSLOOOOWです(反復ごとに新しい関数を作成することは確かに役に立ちません)。また、pythonicの方法を逃したと感じています。なにか提案を?

私に2D配列を与える解決策は良い考えでしょうか? わかりませんが、そうかもしれません。

考えられる質問への回答:

  • はい、これは (広い定義を使用して)、最適化の問題です (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

関数を書き換えることはできますか?可能であれば、2 つの numpy 配列aとを受け取る関数を作成する必要がありnumpy.arange(n)ます。アレイをブロードキャスト用に並べるために、形状を変更する必要がある場合があります。

于 2011-02-12T19:50:13.807 に答える