3

私はPythonコードでこのループを使用しています:

final_fun=[]
for i_base in xrange(n_base):
  final_fun.append(sum(fun[:,i_base])/n_ci)

このループを単純化する方法を知りたいですか?このループを単純化すると、プログラムは高速になりますか? 一般に、これを単純化する方法は知っていますが、ここでは追加によってブロックされています!

4

2 に答える 2

8

リスト内包表記を使用します。それはより速く、よりきれいです。インタプリタは for ループによって大幅に遅くなる可能性があり、構文を再配置するだけで失うものは何もありません。

詳細については、この説明を参照してください。

final_fun = [sum(fun[:,i_base])/n_ci for i_base in xrange(n_base)]
于 2012-08-01T15:28:56.227 に答える
2

fun2次元のNumPy配列のようです。この場合、Python ループを完全に回避することで、コードを大幅に簡素化し、高速化できます。

final_fun = fun.sum(axis=0) / n_ci

リストの代わりに NumPy 配列になってしまいますが、とにかくこれが必要な場合があります。

于 2012-08-01T15:51:16.387 に答える