クラス メソッド内にある for ループをベクトル化しようとしています。for ループの形式は次のとおりです。一連のポイントを反復処理し、特定の変数 (以下では「self.condition_met」と呼ばれます) が true であるかどうかに応じて、ポイントで関数のペアを呼び出し、結果をリストに追加します。 . ここでの各ポイントは、リストのベクトルの要素です。つまり、array([[1,2,3], [4,5,6], ...]) のようなデータ構造です。問題のある関数は次のとおりです。
def myClass:
def my_inefficient_method(self):
final_vector = []
# Assume 'my_vector' and 'my_other_vector' are defined numpy arrays
for point in all_points:
if not self.condition_met:
a = self.my_func1(point, my_vector)
b = self.my_func2(point, my_other_vector)
else:
a = self.my_func3(point, my_vector)
b = self.my_func4(point, my_other_vector)
c = a + b
final_vector.append(c)
# Choose random element from resulting vector 'final_vector'
self.condition_met は my_inefficient_method が呼び出される前に設定されているため、毎回チェックする必要はないようですが、これをどのように記述すればよいかわかりません。ここには破壊的な操作がないため、この全体をベクトル化された操作として書き直すことができるようです-それは可能ですか? これを行う方法はありますか?