我正在尝试对类方法内部的 for 循环进行矢量化。for 循环具有以下形式:它遍历一堆点并根据某个变量(下面称为“self.condition_met”)是否为真,在该点上调用一对函数,并将结果添加到列表中. 这里的每个点都是列表向量中的一个元素,即看起来像数组([[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 之前设置的,所以似乎没有必要每次都检查它,但我不知道如何更好地写这个。由于这里没有破坏性操作,似乎我可以将整个事情重写为矢量化操作——这可能吗?任何想法如何做到这一点?